gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 20:15:00 27 4
gpt4 key购买 nike

我需要在多线程循环中使用随机数,但需要在每个循环中使用相同的值,而不管哪个线程正在评估该循环。

没有多线程我可以做:

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

关于c++ - C++中的快速多线程随机序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14675411/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com