#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. Нет, я не знал, что должен был это делать. Спасибо. Я никогда раньше не использовал подкласс.