我正在寻找一种高性能,相当强大的RNG,无需使用特殊硬件。 它可以使用数学方法(Mersenne Twister等),它可以从机器“收集熵”,无论如何。 在Linux / etc上,我们有一个drand48() ,它可以生成48个随机位。 我想要一个类似的C ++或C#函数/类,它可以产生超过32位的随机性,哪些低阶位与高阶位一样随机。

它不必是加密安全的,但它不能使用或基于C语言rand()或.NET System.Random

任何源代码,源代码链接等将不胜感激! 如果不这样,我应该寻找什么类型的RNG?

===============>>#1 票数:29 已采纳

对于C ++, Boost.Random可能就是你要找的东西。 它支持MT(在许多其他算法中),并且可以通过nondet_random类收集熵。 看看这个! :-)

===============>>#2 票数:8

Gnu科学图书馆 (GSL)拥有相当广泛的RN生成器,测试工具等。如果您使用的是Linux,它可能已经在您的系统上可用。

===============>>#3 票数:7

留意Gnu科学图书馆。 它是根据GPL而不是LGPL许可的。

正如其他人提到的,Boost随机类是一个良好的开端。 它们的实现符合为TR1规定的PRNG代码:

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库

===============>>#4 票数:5

C ++ 11采用了一个基于boost.random的强大随机数库。 您可以使用不同的算法访问许多随机数引擎,以满足您的质量,速度或大小要求。 质量实现甚至可以通过std::random_device访问您的平台提供的任何非确定性RNG。

此外,还有许多适配器可以生成特定的分布,从而无需手动执行此类操作(通常不正确地执行此操作)。

#include <random>

===============>>#5 票数:2

Boost.Random是我对RNG的首选

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

  ask by translate from so

未解决问题?本站智能推荐: