1 TRNG
TRNG 是一个非常灵活的随机数发生器库。它允许顺序和用于并行应用程序。库不依赖于任何特定的通信库。
它可以使用消息传递接口 (MPI), OpenMP, 以及与 POSIX线程或任何其他通信库。本节给出了一个关于写作的简短教程
并行蒙特卡罗应用与 TRNG 和各种并行编程模型, 如MPI 或 OpenMP。
并行随机数产生方法:分块方法block splitting method 或者蛙跳方法the leapfrog method。
TRNG 提供两种强大的技术, 用于并行化的伪随机数流, 即块分裂和跳跃leapfrog。哪一个选择, 高度依赖于结构你的蒙特卡罗算法和你的需求。
leapfrog方法:
采用split()设置,split可以多次调用,产生子子序列。
https://www.numbercrunch.de/trng
windows下编译完成的32位openmp静态库链接:https://download.csdn/download/novanova2009/10542654
头文件及必要的源代码https://download.csdn/download/novanova2009/10542665
2 RngStream
RngStream链接http://www.iro.umontreal.ca/~lecuyer/myftp/streams00/c++/
它更直观,易用。RngStream只是一个并行随机数发生器。周期2^191。可产生2^56长度的子序列。
直接用RngStream g; 然后g.RandU01()即可得到0-1分布随机数。
不同进程/线程采用局部对象变量g,可得到该进程/线程的随机数序列。
更多推荐
并行随机数发生器
发布评论