다음을 통해 공유


Random.NextInt 메서드

정의

오버로드

NextInt()

이 난수 생성기의 시퀀스에서 균일하게 분산된 int 다음 의사 값을 반환합니다.

NextInt(Int32)

이 난수 생성기 시퀀스에서 가져온 0(포함)과 지정된 값(배타적) 사이에 균일하게 분산 int 된 의사 값을 반환합니다.

NextInt()

이 난수 생성기의 시퀀스에서 균일하게 분산된 int 다음 의사 값을 반환합니다.

[Android.Runtime.Register("nextInt", "()I", "GetNextIntHandler")]
public virtual int NextInt ();
[<Android.Runtime.Register("nextInt", "()I", "GetNextIntHandler")>]
abstract member NextInt : unit -> int
override this.NextInt : unit -> int

반환

이 난수 생성기의 시퀀스에서 균일하게 분산된 int 다음 의사 난수 값

특성

설명

이 난수 생성기의 시퀀스에서 균일하게 분산된 int 다음 의사 값을 반환합니다. 일반적인 계약은 nextInt 하나의 int 값이 의사로 생성되어 반환된다는 것입니다. 모든 2<sup>32</sup> 가능한 int 값은 (대략) 같은 확률로 생성됩니다.

메서드 nextInt 는 클래스 Random 에 의해 다음과 같이 구현됩니다.

{@code
            public int nextInt() {
              return next(32);
            }}

에 대한 java.util.Random.nextInt()Java 설명서

이 페이지의 일부는 Android 오픈 소스 프로젝트에서 만들고 공유하고 Creative Commons 2.5 특성 라이선스에 설명된 용어에 따라 사용되는 작업을 기반으로 하는 수정 사항입니다.

적용 대상

NextInt(Int32)

이 난수 생성기 시퀀스에서 가져온 0(포함)과 지정된 값(배타적) 사이에 균일하게 분산 int 된 의사 값을 반환합니다.

[Android.Runtime.Register("nextInt", "(I)I", "GetNextInt_IHandler")]
public virtual int NextInt (int bound);
[<Android.Runtime.Register("nextInt", "(I)I", "GetNextInt_IHandler")>]
abstract member NextInt : int -> int
override this.NextInt : int -> int

매개 변수

bound
Int32

상한(배타적)입니다. 양수여야 합니다.

반환

이 난수 생성기의 시퀀스에서 0(포함)과 bound (배타적) 사이에 균일하게 분산된 int 다음 의사 난수 값

특성

설명

이 난수 생성기 시퀀스에서 가져온 0(포함)과 지정된 값(배타적) 사이에 균일하게 분산 int 된 의사 값을 반환합니다. 일반적인 계약은 nextInt 지정된 범위의 한 int 값이 의사로 생성되어 반환된다는 것입니다. 가능한 int 모든 bound 값은 (대략) 같은 확률로 생성됩니다. 메서드 nextInt(int bound) 는 클래스 Random 에 의해 다음과 같이 구현됩니다.

{@code
            public int nextInt(int bound) {
              if (bound <= 0)
                throw new IllegalArgumentException("bound must be positive");

              if ((bound & -bound) == bound)  // i.e., bound is a power of 2
                return (int)((bound * (long)next(31)) >> 31);

              int bits, val;
              do {
                  bits = next(31);
                  val = bits % bound;
              } while (bits - val + (bound-1) < 0);
              return val;
            }}

다음 메서드는 독립적으로 선택된 비트의 약 편견 없는 소스이기 때문에 헤지 "대략"은 앞에서 설명에서만 사용됩니다. 임의로 선택한 비트의 완벽한 소스인 경우 표시된 알고리즘은 완벽한 균일성을 사용하여 명시된 범위에서 값을 선택합니다 int .

알고리즘은 약간 까다롭습니다. 2^31이 n으로 나눌 수 없기 때문에 고르지 않은 분포를 초래하는 값을 거부합니다. 거부되는 값의 확률은 n에 따라 달라집니다. 최악의 경우는 n=2^30+1이며, 거부 확률은 1/2이고 루프가 종료되기 전에 예상되는 반복 횟수는 2입니다.

이 알고리즘은 n이 특별히 두 개의 힘인 경우를 처리합니다. 기본 의사 난수 생성기에서 올바른 수의 높은 순서 비트를 반환합니다. 특별한 처리가 없으면 올바른 수의 낮은 순서 비트가 반환됩니다. 이 클래스에서 구현하는 것과 같은 선형 동시 의사 난수 생성기는 낮은 순서 비트의 값 시퀀스에서 짧은 기간을 갖는 것으로 알려져 있습니다. 따라서 이 특수한 경우 n이 2의 작은 힘인 경우 이 메서드에 대한 연속 호출에 의해 반환되는 값 시퀀스의 길이가 크게 증가합니다.

1.2에 추가되었습니다.

에 대한 java.util.Random.nextInt(int)Java 설명서

이 페이지의 일부는 Android 오픈 소스 프로젝트에서 만들고 공유하고 Creative Commons 2.5 특성 라이선스에 설명된 용어에 따라 사용되는 작업을 기반으로 하는 수정 사항입니다.

적용 대상