我知道有其他类似的问题,然而以下问题涉及到在C语言中生成任意精度随机数以用于蒙特卡罗模拟。
如果没有大气噪音可用并且不依赖于会产生瓶颈的磁盘I/O或网络访问,我们如何在C语言中生成高质量的任意精度随机数呢?
libgmp可以生成随机数,但是,像其他实现伪随机数生成器一样,它需要种子。正如手册所提到的那样,“系统时间很容易被猜测,因此如果需要不可预测性,则绝不能是种子值的唯一来源。”
是否有一个可移植/移植的库用于生成随机数或随机数种子?libgmp还指出:“在一些系统上,有一个特殊的设备/dev/random,提供更适合用作种子的随机数据。” 但是,/dev/random
和/dev/urandom
仅可用于*nix系统。