내가이있는 경우 : 를임의의 개체에서 임의의 숫자가 어떻게 작동합니까?
random1 = new Random();
Console.WriteLine(random1.Next(1, 100));
Console.WriteLine(random1.Next(1, 100));
나는 그것이 내가 console.writeline를 호출 할 때마다 대해 다른 번호를 생성거야가 (난 이미 변수 선언), 그래서 이것은 예를 생성합니다. 10, 55 그리고 만약 당신이 다시 20,60 그래서 기본적으로 임의의 숫자 매번, 좋은. 하지만 추가 할 때이 :
random2 = new Random();
Console.WriteLine(random1.Next(1, 100));
Console.WriteLine(random1.Next(1, 100));
Console.WriteLine(random2.Next(1, 100));
Console.WriteLine(random2.Next(1, 100));
Random1가 같은 번호가 무작위로 생성됩니다! 그럼 전예요. 5,54,5,54 그리고 만약 내가 다시 70,34,70,34. 하지만 random2는 새로운 객체입니다. 왜 random1과 동일한 숫자를 생성합니까?
또 다른 예 : 나는이
randomnumberobject = new RandomNumber();
randomnumberobject2 = new RandomNumber();
Console.WriteLine(randomnumberobject.getrandomnumber);
Console.WriteLine(randomnumberobject2.getrandomnumber);
을 수행 한 후이
class RandomNumber
{
Random random = new Random();
public int getrandomnumber { get { return random.Next(1, 5); } }
}
같은 클래스 그들은 임의의 숫자를 생성 할 수 있습니다,하지만 둘 다 똑같은 난수를 생성하는 경우 . 그래서 처음으로이 5,3 초를 얻었습니다.이 3,3 등등. 나는이
class RandomNumber
{
Random random;
public int getrandomnumber { get { return random.Next(1, 5); } }
public RandomNumber(Random random) { this.random = random; }
}
에 클래스를 변경하고 대신
random = new Random();
randomnumberobject = new RandomNumber(random);
randomnumberobject2 = new RandomNumber(random);
Console.WriteLine(randomnumberobject.getrandomnumber);
Console.WriteLine(randomnumberobject2.getrandomnumber);
갑자기 이렇게하면 는하지만, 그들은 모두 서로 다른 난수를 생성! 그런데 왜 이런 일이 일어 났습니까? 이유가 뭐야? 나는 아직도 초보자 다.
[docs] (http://msdn.microsoft.com/en-us/library/system.random.aspx)의 비고 섹션의 두 번째 단락을 참조하십시오. "기본적으로 Random 클래스의 매개 변수없는 생성자는 시스템 시계를 사용하여 시드 값을 생성하지만 매개 변수화 된 생성자는 현재 시간의 틱 수를 기반으로 Int32 값을 취할 수 있지만 시계가 유한 해상도이므로 매개 변수없는 생성자를 사용하여 서로 다른 무작위 객체를 연속적으로 생성하여 동일한 시퀀스의 난수를 생성하는 난수 생성기를 만듭니다. – RobH
무작위 수를 파헤칩니다. 그것은 모두 거기에 있습니다. 매번 동일한 순서의 난수를 원할 때가 있고 때로는 그렇지 않은 경우가 있습니다. –