Как реализовать линейный конгруэнтный генератор на Java?

Я реализую свой собственный ГПСЧ, где я должен использовать линейный конгруэнтный генератор. Один из моих методов должен генерировать следующее псевдослучайное число, как показано ниже. Семя получено от пользователя ранее.

MyRandom(long seed) {

Random random = new Random();
random.setSeed(seed);

}

Это метод, который должен генерировать следующее псевдослучайное число. Это то, что я пытался написать, но я действительно не знаю, как заставить это работать в следующих числах. a и b - выбранные константы, а m - выбранное простое число.

int next(int bits) {

long seed;
seed = (a * seed) + (b % m);
return (int) (seed >>> (48 - bits));


}

ПОДСКАЗКА: ваш метод next не использует начальное число, ранее установленное пользователем; на самом деле он использует нулевое семя. Вы можете догадаться, почему?

Kevin Anderson 31.03.2021 12:44

Нужно ли мне каким-то образом инициализировать начальное число в методе next? @KevinAnderson

Eve00 31.03.2021 14:32

@ Eve00, возможно, стоит прочитать о переменных-членах. они позволяют сохранять состояние между вызовами функций

Sam Mason 31.03.2021 14:57
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
3
50
0

Другие вопросы по теме