CUDA中产生随机数的方法

最近经常看到人问怎样在CUDA中产生随机数,所以开了这个帖子,大家有经验的就分享一下吧!也可以让别人少查一些。

我以前看到的一篇文章中使用了线性同余的办法,还有CUDA SDK中也提供了一种办法。

CUDA SDK在不同的例子中提供了多个随机数发生器:
SobolQRNG
Sobel-Quasi随机数发生器

MersenneTwister
MersenneTwister随机数发生器

quasirandomGenerator
Quasi随机数发生器

MonteCarlo中也有随机数发生器

你好!能分别说一下这个DEMO中的随机数算法吗?相关的参考文献也行。谢谢!

去网上搜索gpu_rng这个线性同余发生器,其算法参考自Unix的rand48,比较好用。

谢谢!

我仔细看了一下源代码,相当不错,基本上就是串行的线性同余方法的GPU实现,但是感觉有点问题就是这个要求每个线程生成的随机数近似相等,不知道我是否对源代码理解失误。