并行随机数发生器

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.net/download/novanova2009/10542654

头文件及必要的源代码https://download.csdn.net/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,可得到该进程/线程的随机数序列。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值