Я ищу производительный, достаточно надежный ГСЧ без специального оборудования. Он может использовать математические методы (Мерсенн Твистер и т. д.), Он может «собирать энтропию» из машины, что угодно. В Linux / и т. д. У нас есть drand48(), который генерирует 48 случайных битов. Мне нужна аналогичная функция / класс для C++ или C#, которые могут генерировать более 32 бита случайности и у которых биты младшего разряда столь же случайны, как и биты высокого порядка.
Он не должен быть криптографически безопасным, но он не должен использовать или основываться на языке C rand() или .NET System.Random.
Любой исходный код, ссылки на источник и т. д. Приветствуются! В противном случае, какой ТИП ГСЧ мне следует искать?
Обоснование закрытия этого вопроса совершенно не кажется правильным.
@ bames53 Я отправил повторное голосование. Кажется, у тебя тоже достаточно повторений, так что делай это. :-D
Полагаю, что теперь можно <br> просто погуглить





Для C++, вероятно, вам нужен Boost.Random. Он поддерживает MT (среди многих других алгоритмов) и может собирать энтропию через класс nondet_random. Проверьте это! :-)
Научная библиотека Гну (GSL) имеет довольно обширный набор генераторов RN, средств тестирования и т. д. Если вы работаете в Linux, он, вероятно, уже доступен в вашей системе.
Следите за научной библиотекой Gnu. Он распространяется под лицензией GPL, а не LGPL.
Как уже упоминали другие люди, случайные классы Boost - хорошее начало. Их реализация соответствует коду ГПСЧ, предназначенному для TR1:
http://www.boost.org/doc/libs/1_35_0/libs/random/index.htmlhttp://www.open-std.org/jtc1/sc22/wg21/docs/papers/2003/n1452.html
Если у вас последняя версия компилятора G ++, вы можете обнаружить, что библиотеки TR1 уже включены.
Boost.Random - мой первый выбор для ГСЧ
http://www.boost.org/doc/libs/random
Вы можете найти Boost random, просто погуглив, поэтому я не предоставляю никаких ссылок. Теперь я обновил его ссылкой на lib.
В C++ 11 принята надежная библиотека случайных чисел, основанная на boost.random. Вы можете получить доступ к нескольким механизмам случайных чисел, используя различные алгоритмы, чтобы удовлетворить ваши требования к качеству, скорости или размеру. Качественные реализации даже предоставят доступ к любому недетерминированному ГСЧ, предлагаемому вашей платформой, через std::random_device.
Вдобавок существует множество адаптеров для создания определенных дистрибутивов, что избавляет от необходимости выполнять такие манипуляции вручную (что-то часто делается неправильно).
Почему не
System.Random? Я знаю, чтоrandплохой,System.Randomтоже плохой? Если так, то грустно :(