Поделиться через


Random.NextInt Метод

Определение

Перегрузки

NextInt()

Возвращает следующее псевдорандомное значение, равномерно распределенное int из последовательности генератора случайных чисел.

NextInt(Int32)

Возвращает псевдорандомное значение, равномерно распределенное int между 0 (включительно) и указанным значением (монопольным), полученным из последовательности генератора случайных чисел.

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 для java.util.Random.nextInt().

Части этой страницы — это изменения на основе работы, созданной и общей проектом с открытым исходным кодом Android и используемой в соответствии с условиями, описанными в лицензии Creative Commons 2.5 Attribution.

Применяется к

NextInt(Int32)

Возвращает псевдорандомное значение, равномерно распределенное int между 0 (включительно) и указанным значением (монопольным), полученным из последовательности генератора случайных чисел.

[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

верхняя граница (эксклюзивная). Должно быть положительным.

Возвращаемое значение

следующее псевдорандомо, равномерно распределенное int значение между нулевым (включительно) и bound (эксклюзивным) из последовательности генератора случайных чисел

Атрибуты

Комментарии

Возвращает псевдорандомное значение, равномерно распределенное int между 0 (включительно) и указанным значением (монопольным), полученным из последовательности генератора случайных чисел. Общий контракт nextInt заключается в том, что одно int значение в указанном диапазоне создается псевдорандомно и возвращается. Все bound возможные int значения создаются с равной вероятностью (приблизительно). Метод 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 является небольшой мощностью из двух.

Добавлено в версии 1.2.

Документация по Java для java.util.Random.nextInt(int).

Части этой страницы — это изменения на основе работы, созданной и общей проектом с открытым исходным кодом Android и используемой в соответствии с условиями, описанными в лицензии Creative Commons 2.5 Attribution.

Применяется к