Страницы

Поиск по вопросам

среда, 17 июля 2019 г.

java - Как работает рандом?

Random.nextInt(100);
Вроде обычный код, правда? Ну, берет этот рандом число от 0 до 100 и фиг с ним. А вы задумывались как он работает? Если нет последовательности, тогда что скрывается за этим методом, nextInt? Это секрет или всем давно известно, а я самый такой отсталый? Кто в теме, просвятите меня, пожалуйста. Интересно, не могу.


Ответ

Я не знаю, как конкретно это реализовано в Java, но вообще-то методы генерации случайных чисел, конечно, не секрет. Для начала берется из системы какое-нибудь быстро меняющееся значение или комбинация таких значений (напр. текущее время в миллисекундах xor объем свободной памяти в байтах), от нее считается какая-нибудь быстрая хэш-функция и полученный результат используется как основание (seed) для генерации псевдослучайной последовательности. Самый простой способ ее вычисления такой: rand[i] = (rand[i - 1] * a + b) % c, где a, b и c - специально подобранные достаточно большие числа. Вроде бы, современные процессоры это на аппаратном уровне умеют делать. См. более подробно на википедии: https://ru.wikipedia.org/wiki/Генератор_псевдослучайных_чисел

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

Отправить комментарий