Надежная генерация случайных чисел [закрыто]

Я ищу эффективный, достаточно надежный ГСЧ без специального оборудования. Он может использовать математические методы (Mersenne Twister и т. Д.), Он может «собирать энтропию» с машины, что угодно. В Linux / etc у нас есть drand48()48, которые генерируют 48 случайных битов. Я хотел бы подобную функцию / класс для C ++ или C #, которая может генерировать более 32 битов случайности и которые биты младшего разряда столь же случайны, как биты старшего разряда.

Он не должен быть криптографически безопасным, но он не должен использовать или основываться на языке C rand()или .NET System.Random.

Любой исходный код, ссылки на источник и т. Д. Будет принята с благодарностью! В противном случае, какой тип ГСЧ я должен искать?

3.08.2008 02:05:59
Почему нет System.Random? Я знаю, что randэто плохо, System.Randomа также плохо? Если это так, это грустно :(
Mooing Duck 11.09.2012 00:36:39
Обоснование закрытия этого вопроса не кажется правильным вообще.
bames53 11.09.2012 03:21:01
@ bames53 Я отправил повторное голосование. Кажется, у вас тоже достаточно представителей, так что делайте это. :-D
Chris Jester-Young 10.10.2014 15:32:30
Я полагаю, что теперь вы можете <br/> просто Google
Sergio 1.02.2017 06:08:30
5 ОТВЕТОВ
РЕШЕНИЕ

Для C ++ Boost.Random , вероятно, то, что вы ищете. Он поддерживает MT (среди многих других алгоритмов) и может собирать энтропию через nondet_randomкласс. Проверьте это! :-)

29
3.08.2008 02:18:57

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

8
3.08.2008 02:38:04

Остерегайтесь научной библиотеки Гну. Он лицензируется под лицензией GPL, а не LGPL.

Как уже упоминалось, случайные классы Boost - хорошее начало. Их реализация соответствует коду PRNG для TR1:

http://www.boost.org/doc/libs/1_35_0/libs/random/index.html http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2003/n1452.html

Если у вас есть последняя версия компилятора G ++, вы можете обнаружить, что библиотеки TR1 уже включены

7
20.08.2014 22:19:23

C ++ 11 принял надежную библиотеку случайных чисел, основанную на boost.random. Вы можете получить доступ к нескольким механизмам случайных чисел, используя различные алгоритмы, чтобы удовлетворить ваши требования к качеству, скорости или размеру. Качественные реализации даже обеспечат доступ к любому недетерминированному ГСЧ, через который ваша платформа предлагает std::random_device.

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

#include <random>

5
26.06.2012 16:05:10

Boost.Random мой первый выбор для RNG

http://www.boost.org/doc/libs/random

2
11.09.2012 06:56:00
Вы можете найти Boost случайным, просто погугливая, поэтому я не даю никаких ссылок. Теперь я обновил его ссылкой на lib.
Rohit Vipin Mathews 11.09.2012 06:56:57