加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

C中的快速多线程随机序列

发布时间:2020-12-16 09:42:20 所属栏目:百科 来源:网络整理
导读:我需要在多线程循环中使用random,但是需要通过每个循环使用相同的值,而不管哪个线程正在评估该循环. 没有多线程,我可以这样做: seed(1)for (unsigned int i=0; i100; i++){ rand()} 在循环内,每次调用rand()时,它将返回一个新的伪随机值.现在我想创建相同的
我需要在多线程循环中使用random,但是需要通过每个循环使用相同的值,而不管哪个线程正在评估该循环.

没有多线程,我可以这样做:

seed(1)
for (unsigned int i=0; i<100; i++){
     rand()
}

在循环内,每次调用rand()时,它将返回一个新的伪随机值.现在我想创建相同的多线程列表.

主要原因是我需要与循环次序无关的相同序列的伪随机数(因此更像是基于循环中的’i’).

注意:我一直在经历许多“随机”和“多线程”主题,但只找到了如何确保数字始终是随机的解决方案,而不是相反.

编辑:

结果应该好像基于种子创建随机列表.并且该随机列表应该在具有索引’i’的循环内使用以获得伪随机值.因此,在循环内,相同的随机数将基于种子在索引“i”处. (但是整个循环中不应该有一个随机数相同.但是每个程序运行的顺序应该相同.独立于线程数或者哪个线程正在评估循环的一部分.)

创建该列表(非多线程)并在多线程循环中使用该初始化列表不是非常有效.有什么想法吗?

解决方法

使用任何非STDC随机数生成器,具有可单独管理的状态.我推荐这个: http://www.boost.org/doc/libs/1_52_0/doc/html/boost_random.html

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读