Можно ли указать верхнюю и нижнюю границы для nextInt в Mersenne Twister RNG (Java) - PullRequest
0 голосов
/ 05 июля 2019

У меня есть требование для генерации случайных чисел, в частности, с использованием алгоритма Мерсенна Твистера, в Java / Kotlin (для Android). Я попытался использовать Apache Mersenne Twister, который отлично работает для генерации случайных целых чисел. Однако мне нужно указать довольно маленький диапазон для них, интервалы должны быть между 1 и 100.

Невозможно указать верхнюю и нижнюю границы с помощью реализации Apache. Кто-нибудь знает какие-либо альтернативные варианты Mersenne Twister для Java / Kotlin, которые принимают границы для сгенерированного nextInt?

1 Ответ

0 голосов
/ 05 июля 2019

AFAIK, вы можете передать верхнюю границу сгенерированного int методу nextInt, так что можно написать простую функцию расширения, например:

fun MersenneTwister.nextInt(min: Int, max: Int) = min + nextInt(max - min)

Обратите внимание, что, как и в случае с результатом nextInt, MT не включает верхнюю границу,поэтому вам может потребоваться добавить 1 к аргументу nextInt, если вам нужно такое поведение.

Также обратите внимание, что я не очень хорошо тестировал эту функцию, поэтому сделайте это самостоятельно, прежде чем использовать ее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...