1

我正在尝试优化用于生物信息学目的的基于 C 的代码。它使用蒙特卡洛迭代进行主要部分计算。它之前使用 ran2() 生成随机数,这使得它非常慢。经过深入研究,我发现 mersenne twister 和 sfmt 是更高效的随机数生成器。但是,我尝试在我的代码中使用它们,它们似乎对速度没有太大影响。鉴于程序每次迭代使用生成器 10 次以上,我无法弄清楚为什么更改生成器对速度没有影响。

谁能告诉我我哪里可能出错了?

4

1 回答 1

2

选择随机数生成器始终是质量(它们生成的数字)和速度之间的平衡。线性同余生成器通常是最快的,但它们适合任何严肃的蒙特卡罗工作。

根据经验,我会说 mersenne twister 很好 --- 它不是超慢的,你不必担心质量。只要瓶颈在生成器中,我会说在单个核心上您无能为力。

话虽如此,这里是几个生成器的比较:http: //www.boost.org/doc/libs/1_48_0/doc/html/boost_random/performance.html

于 2011-12-19T19:10:22.790 回答