수색…


소개

Random 클래스는 무작위가 아닌 음수가 아닌 의사 랜덤 정수를 생성하는 데 사용되지만 충분히 일반적인 목적으로 사용됩니다.

시퀀스는 초기 번호 ( 시드 라고 함)를 사용하여 계산됩니다. 이전 버전의 .net에서는이 시드 값이 응용 프로그램이 실행될 때마다 동일했습니다. 따라서 응용 프로그램이 실행될 때마다 동일한 의사 난수 시퀀스를 얻게 될 것입니다. 이제 씨앗은 객체가 선언 된 시간을 기반으로합니다.

비고

마지막으로 무작위 화에 대한 메모. 앞에서 언급했듯이 매개 변수없이 Random 인스턴스를 선언하면 생성자는 현재 시드를 생성하기 위해 계산의 일부로 현재 시간을 사용합니다. 일반적으로 OK입니다.

하나. 매우 짧은 시간 동안 새 인스턴스를 다시 선언하면 시드 번호가 계산 될 때마다 시간이 동일해질 수 있습니다. 이 코드를 고려하십시오.

For i As Integer = 1 To 100000
    Dim rnd As New Random
    x = rnd.Next
Next

요즘 컴퓨터가 매우 빨라서이 코드는 실행하는 데 몇 분의 1 초가 걸리고 루프의 몇 가지 비정상적인 반복에서는 시스템 시간이 변경되지 않습니다. 따라서 시드 번호는 변경되지 않으며 임의 번호는 동일합니다. 많은 수의 난수를 생성하려면이 간단한 예제에서 루프 외부에 random 인스턴스를 선언하십시오.

Dim rnd As New Random
For i As Integer = 1 To 100000
    x = rnd.Next
Next

엄지의 기본 규칙은 짧은 기간 동안 난수 생성기를 다시 인스턴스화하지 않는 것입니다.

인스턴스 선언하기

Dim rng As New Random()

rng 라는 Random 클래스의 인스턴스를 선언합니다. 이 경우 개체가 만들어지는 시점의 현재 시간이 시드를 계산하는 데 사용됩니다. 이것은 가장 보편적 인 사용법이지만, 나중에 우리가 언급 할 것입니다.

프로그램이 현재 시드를 계산할 때 현재 시간을 사용하는 대신 초기 시드 수를 지정할 수 있습니다. 32 비트 정수 리터럴, 상수 또는 변수가 될 수 있습니다. 예제는 아래를 참조하십시오. 이렇게하면 인스턴스가 동일한 상황의 의사 난수 시퀀스를 생성하므로 특정 상황에서 유용 할 수 있습니다.

Dim rng As New Random(43352)

또는

Dim rng As New Random(x)

여기서 x 는 프로그램의 다른 곳에서 Integer 상수 또는 변수로 선언되었습니다.

무작위의 인스턴스에서 난수 생성

다음 예제에서는 Random 클래스의 새 인스턴스를 선언 한 다음 .Next 메서드를 사용하여 의사 난수 시퀀스의 다음 숫자를 생성합니다.

Dim rnd As New Random
Dim x As Integer
x = rnd.Next

위의 마지막 줄은 다음의 의사 난수를 생성하여 x 대입합니다. 이 숫자는 0 - 2147483647 범위에 있습니다. 그러나 아래 예제와 같이 생성 될 숫자의 범위를 지정할 수도 있습니다.

x = rnd.Next(15, 200)

그러나이 매개 변수를 사용하면 숫자 범위가 15 이상 199 이하가됩니다.

.NextDouble 를 사용하여 Double 유형의 부동 소수점 숫자를 생성 할 수도 있습니다.

Dim rnd As New Random
Dim y As Double
y = rnd.NextDouble()

그러나 범위를 지정할 수는 없습니다. 항상 0.0보다 작고 1.0보다 작습니다.



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow