以纯粹的方式使用c ++随机数生成器

时间:2015-09-12 02:08:36

标签: c++ random std

我有一个蒙特卡罗系统,我有一些状态随机演变,使用内部随机数发生器。我还在该程序的其他地方存储了此状态的const副本,因为我想知道它将如何发展,如果它实际发展。这需要随机数生成器的两件事:

1)克隆生成器而不修改它的能力,以存储在复制的状态版本中。

2)能够确定发生器的const副本中的下一个随机数。

这只能使用标准库吗?如果没有,你能推荐第三方图书馆吗?

1 个答案:

答案 0 :(得分:3)

标准C++11 random generators是可以复制的普通对象,副本将生成相同的序列。他们还可以使用operator<<operator>>将其内部状态序列化和反序列化为iostream。

生成随机数的operator()不是const函数,因为它会更改生成器的内部状态。因此,您无法直接在生成器的const副本上调用它。但你可以制作const的临时可变副本,从中生成一个值,然后将其销毁。

如果你的编译器不支持C ++ 11,你可以使用Boost.Random library,这是标准的基础。