C# Language
C #에서 난수 생성하기
수색…
통사론
무작위 ()
랜덤 (int 시드)
int 다음 ()
int 다음 (int maxValue)
int 다음 (int minValue, int maxValue)
매개 변수
매개 변수 | 세부 |
---|---|
씨 | 난수 생성을위한 값. 설정되지 않은 경우 기본값은 현재 시스템 시간에 의해 결정됩니다. |
최소값 | 생성 된 숫자는이 값보다 작을 수 없습니다. 설정되지 않은 경우 기본값은 0입니다. |
maxValue | 생성 된 숫자는이 값보다 작습니다. 설정되지 않은 경우 기본값은 Int32.MaxValue 입니다. |
반환 값 | 임의의 값을 가진 숫자를 반환합니다. |
비고
시스템에 의해 생성 된 임의의 시드는 모든 다른 실행에서 동일하지 않습니다.
같은 시간에 생성 된 종자는 동일 할 수 있습니다.
무작위 int 생성
이 예제는 0에서 2147483647 사이의 임의의 값을 생성합니다.
Random rnd = new Random();
int randomNumber = rnd.Next();
무작위 배수 생성
0과 1.0 사이의 난수를 생성하십시오. (1.0 제외)
Random rnd = new Random();
var randomDouble = rnd.NextDouble();
지정된 범위의 무작위 int를 생성합니다.
minValue
와 maxValue - 1
사이의 임의의 숫자를 생성하십시오.
Random rnd = new Random();
var randomBetween10And20 = rnd.Next(10, 20);
동일한 난수 시퀀스 반복 생성
동일한 시드로 Random
인스턴스를 만들 때 동일한 숫자가 생성됩니다.
int seed = 5;
for (int i = 0; i < 2; i++)
{
Console.WriteLine("Random instance " + i);
Random rnd = new Random(seed);
for (int j = 0; j < 5; j++)
{
Console.Write(rnd.Next());
Console.Write(" ");
}
Console.WriteLine();
}
산출:
Random instance 0
726643700 610783965 564707973 1342984399 995276750
Random instance 1
726643700 610783965 564707973 1342984399 995276750
다른 종자와 동시에 여러 무작위 클래스 만들기
동시에 생성 된 두 개의 임의 클래스는 동일한 시드 값을가집니다.
System.Guid.NewGuid().GetHashCode()
는 같은 시간에 다른 시드를 얻을 수 있습니다.
Random rnd1 = new Random();
Random rnd2 = new Random();
Console.WriteLine("First 5 random number in rnd1");
for (int i = 0; i < 5; i++)
Console.WriteLine(rnd1.Next());
Console.WriteLine("First 5 random number in rnd2");
for (int i = 0; i < 5; i++)
Console.WriteLine(rnd2.Next());
rnd1 = new Random(Guid.NewGuid().GetHashCode());
rnd2 = new Random(Guid.NewGuid().GetHashCode());
Console.WriteLine("First 5 random number in rnd1 using Guid");
for (int i = 0; i < 5; i++)
Console.WriteLine(rnd1.Next());
Console.WriteLine("First 5 random number in rnd2 using Guid");
for (int i = 0; i < 5; i++)
Console.WriteLine(rnd2.Next());
다른 종자를 얻기위한 또 다른 방법은 다른 Random
인스턴스를 사용하여 종자 값을 검색하는 것입니다.
Random rndSeeds = new Random();
Random rnd1 = new Random(rndSeeds.Next());
Random rnd2 = new Random(rndSeeds.Next());
또한 rndSeeds
의 시드 값만 설정하여 모든 Random
인스턴스의 결과를 제어 할 수 있습니다. 다른 모든 인스턴스는 결정적으로 단일 시드 값에서 파생됩니다.
임의의 문자 생성
주어진 범위의 숫자에 대해 Next()
오버로드를 사용하여 a
와 z
사이에 임의의 문자를 생성 한 Next()
결과 int
를 char
로 변환합니다.
Random rnd = new Random();
char randomChar = (char)rnd.Next('a','z');
//'a' and 'z' are interpreted as ints for parameters for Next()
최대 값의 백분율 인 숫자를 생성하십시오.
난수에 대한 공통적 인 필요성은 최대 값의 X%
인 수를 생성하는 것입니다. 이것은 NextDouble()
의 결과를 백분율로 처리하여 수행 할 수 있습니다.
var rnd = new Random();
var maxValue = 5000;
var percentage = rnd.NextDouble();
var result = maxValue * percentage;
//suppose NextDouble() returns .65, result will hold 65% of 5000: 3250.