簡體   English   中英

以純粹的方式使用c ++隨機數生成器

[英]Using c++ random number generators in a pure fashion

我有一個蒙特卡洛系統,我有一些狀態隨機演變,使用內部隨機數發生器。 我也在程序的其他地方存儲了這個狀態的const副本,因為我想知道它將如何發展,是否真的發展。 這需要隨機數生成器的兩件事:

1)克隆生成器而不修改它的能力,存儲在復制的狀態版本中。

2)能夠從發生器的const副本確定下一個隨機數是什么。

這只能使用標准庫嗎? 如果沒有,你能推薦第三方圖書館嗎?

標准C ++ 11隨機生成器是可以復制的普通對象,副本將生成相同的序列。 他們還可以使用operator<<operator>>將其內部狀態序列化和反序列化為iostream。

生成隨機數的operator()不是const函數,因為它改變了生成器的內部狀態。 所以你不能直接在生成器的const副本上調用它。 但是你可以制作const one的臨時可變副本,從中生成一個值,然后銷毀它。

如果您的編譯器不支持C ++ 11,您可以使用Boost.Random庫 ,它是標准的基礎。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM