c ++的随机类

时间:2011-08-14 18:14:01

标签: c++ random

我想要一个C ++项目,有一个类具有Random类在java或c#中的功能

我找到了这个,http://www.dreamincode.net/code/snippet342.htm但它有错误,我现在无法解决它们。

你能指出错误及其修复,或建议另一种实现吗?

3 个答案:

答案 0 :(得分:8)

有三个几乎相同的,高质量的“标准”随机数生成库,您应该尝试按降序查找:

  • C ++ 11的<random>
  • TR1的<tr1/random>
  • Boost的<boost/random.hpp>

除命名空间(stdstd::tr1boost外),它们在概念上完全相同,甚至几乎完全相同。

每个库都定义了一组引擎,例如std::mt19937。选择一个(每个线程)并播种。

拥有引擎后,您可以使用各种发行版来使用引擎生成数字。经常使用的分布是[a,b]范围内的均匀整数,[0,1]范围内的均匀浮点数,以及正态分布等几种众所周知的概率分布。

答案 1 :(得分:4)

试试这个:http://bedaux.net/mtrand/

答案 2 :(得分:1)

我实际上已经实现了一个:http://frigocoder.dyndns.org/svn/Frigo/Math,请参阅Random,Random.cpp和MersenneTwister

Random是一个抽象类,但与Java不同,我不想默认实现愚蠢的LCG生成器。它也没有nextGaussian方法。 MersenneTwister继承了它。

他们对我的库有很多依赖关系,但是可以很容易地删除它们,并且你有一般的想法。