Существует ли какая-либо библиотека случайных генераторов, кроме rand (), разработчик которой может вручную установить начальное число? - PullRequest
0 голосов
/ 19 октября 2019

Я хочу убедиться, что если начальное число одинаковое, то результирующее псевдослучайное число будет одинаковым. Использование rand () является самым простым, но я ищу более безопасный способ. Я обнаружил, что использование энтропии устройства с / dev / random в Linux очень надежно, но не могу найти, как установить точно такое же начальное число. Я также пробовал cryptgenrandom of window, но не могу найти способ установить seed. Могу ли я сделать ручной посев с помощью тех случайных генераторов, которые используют устройства? Или есть какая-нибудь другая библиотека генератора случайных чисел, которую я могу установить вручную?

Ответы [ 2 ]

2 голосов
/ 19 октября 2019

Да, <random> позволяет это, и это хорошая идея, чтобы переключиться на это. C <random> библиотека намного превосходит до <stdlib> rand() и позволяет устанавливать начальное значение каждый раз. Вы должны использовать <random> для любогопроизводственный код, который вы пишете.

1 голос
/ 19 октября 2019

Существует ли какая-либо библиотека генератора случайных чисел, кроме rand (), разработчик которой может вручную установить начальное число?

Да. Есть много доступных генераторов случайных чисел (и большинство из них можно посеять), и все они лучше, чем rand() (что довольно плохо). Не используйте srand() / rand() в производственном коде.

Проверьте заголовок <random>.

Я бы порекомендовал std::mt19937 для не-криптографических целей (убедитесь, что правильно правильно , а не только с одним int) и std::random_device, если вам нужна грубая энтропия (убедитесь, что ваша реализация действительно реализует ее правильно,Стандарт - по ошибке ИМХО - позволяет ему вернуться к PRNG). Держитесь подальше от std::default_random_engine, вы не знаете, что это даст вам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...