Как стать автором
Обновить

Создавая непредсказуемость. Примеры использования генераторов случайных чисел

Время на прочтение 8 мин
Количество просмотров 5.9K
Всего голосов 10: ↑9 и ↓1 +8
Комментарии 14

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

Главное на продакшене не забыть поставить правильный параметр, а то функция RAND() может выдавать совсем не то, что требуется.

Как, например, во время первого вызова выдавать одно и то-же число.

Потому что это для режима отладки.

Тема очень актуальная. Станислава Лем целый роман на эту тему написал — «Голос неба».
Но, к сожалению, в статье тема не раскрыта полностью. Так:


ГИСЧ считаются «истинными», так как используют в качестве источника энтропии внешний источник, расположенный за пределами компьютерной программы – например, погоду, атмосферные помехи или промежутки времени, в течение которых вы удерживаете клавиши на клавиатуре вашего компьютера.

ИМХО погода — не лучший источник. Все знают, что летом бывает жарко, а зимой холодно, за морозом будет оттепель. В менеджерах паролей используют закрашивание квадрата мышью. Это выглядит надежнее. В железе используют шум полупроводниковых диодов, что почти не хуже ядерной реакции. Но если детерминизм Лапса, которому философы пока не придумали строгого опровержения, верен, то с идеей абсолютно случайных чисел придется проститься ;)

Станислава Лем целый роман на эту тему написал — «Голос неба».

Вы имели в виду "Глас Господа" (Głos Pana)?

Да. Первоначально в переводе это был «Голос неба».

А при чем тут жарко и холодно. Десятые доли градуса за окном это практически случайная величина. Как и последняя цифра s&p 500

Это получается можно s&p 500 использовать для генерации случайных чисел :)

И что делать, если за долю секунды мне нужно 100 тысяч случайных чисел?

Использовать значение ГИСЧ в качестве сида для ГПСЧ. Через определенное количество использований повторять такую процедуру

Слышал байку, что в музыкальных плеерах (вроде бы эпл) из-за жалоб пользователей отказались от "настоящей" рандомизации в функции перемешивания треков, потому что настоящий рандом кажется человеку "недостаточно" случайным.

Помню, когда в университете проходили алгоритмы сортировки я спросил преподавателя, мол, если есть алгоритмы сортировки, существуют ли алгоритмы с противоположным действием? И преподаватель только странно посмотрела на меня и спросила "А зачем?"

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

Или еще есть вариант для free-to-play: регулировать шансы по некоей эмпирической кривой, с одной стороны подводя к тому, что бы игрок задонатил, с другой - не доводя до того, чтобы бросил играть совсем.

Имеет место распространенная путаница в различных понятиях, в обиходе называемых "случайностью":

  • случайность бытовая - синоним непредсказуемости;

  • случайность математическая (случайная величина) - очень предсказуемая вещь, своего рода противоположеность бытовой случайности.

Если вас интересует по-настоящему сложное шифрование, обратите внимание на SHA-256 [13]. SHA означает “Secure Hash Algorithm” (алгоритм криптографического хеширования).

SHA-256 – основа защиты большинства блокчейнов, а также стандартный метод шифрования в АНБ и ЦРУ.

Кажется автор не понимает разницу в шифровании и хэшировании.

Читал комментарии и ждал, напишет кто это или нет.
SHA-256 это не про шифрование, это про валидацию данных — проверка что данные не менялись, про уникальный идентификатор данных.
Случайностей здесь тоже не должно быть. Хэш от идентичных данных должен быть идентичным.

Откуда данные про все компьютеры в мире считали бы обратный хэш 37 раз возрастов вселенной?

Зарегистрируйтесь на Хабре , чтобы оставить комментарий