Random.NextInt Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Перегрузки
NextInt() |
Возвращает следующее псевдорандомное значение, равномерно распределенное |
NextInt(Int32) |
Возвращает псевдорандомное значение, равномерно распределенное |
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.