Как использовать генератор случайных чисел MersenneTwisterRNG

#java #random

#java #Случайный

Вопрос:

Я пытаюсь реализовать генератор случайных чисел в моей Java-программе. Я использовал Math.random() , но, похоже, это работает не очень хорошо. Затем я попытался использовать SecureRandom, но для моей игры это заняло слишком много времени. Тем не менее, я наткнулся на этот генератор, генератор случайных чисел MersenneTwisterRNG. Кажется, это то, что я хочу; быстро, но все равно случайно.

Однако я не очень долго пишу на Java, всего 2 месяца, и я не могу понять, что такое API. Если кто-нибудь может помочь объяснить мне, как использовать это в моем коде, я был бы признателен. Или, если вы случайно знаете о более простом, но похожем генераторе случайных чисел, мне это тоже было бы интересно. API находится здесь.

Комментарии:

1. Что вы имеете в виду, Math.random() что «не очень хорошо сработало»? Что, по вашему мнению, в нем было не так? Пожалуйста, приведите конкретный опыт и примеры.

Ответ №1:

Как использовать API MersenneTwisterRNG:

 import java.util.Random;
import org.uncommons.maths.random.MersenneTwisterRNG;
  

Это позволяет получить доступ к классам, используя их короткие имена.

 Random rand = new MersenneTwisterRNG();
  

Это создает новый MersenneTwisterRNG. Мы помещаем его в переменную типа Random, чтобы при необходимости легко заменить его на другой RNG.

 double x = rand.nextDouble();
  

Это работает так же, как Math.random(), и возвращает число с плавающей запятой двойной точности в диапазоне от 0.0 до 1.0.

 int n = rand.nextInt(10);
  

Это генерирует случайное число от 0 (включительно) до 9 (включительно), т.е. 0 <= n < 10. Это полезно для многих целочисленных алгоритмов.

Комментарии:

1. Я получаю сообщение об ошибке, что пакет org.uncommons.maths.random не существует. Вы знаете, почему я могу это получить?

2. Вы скачали их код и поместили его в каталог вашего проекта?

3. Нет, я не знал, что должен был это делать. Спасибо. Я никогда раньше не использовал подкласс.