我需要在多线程循环中使用随机数,但在每个循环中都需要相同的值,而与哪个线程正在评估该循环无关。
没有多线程我可以做到:
seed(1)
for (unsigned int i=0; i<100; i++){
rand()
}
在循环中,每次调用 rand() 时,它都会返回一个新的伪随机值。现在我想创建相同的多线程列表。
主要原因是我需要与循环顺序无关的相同伪随机数序列(所以更像是基于循环内的“i”)。
注意:我经历了许多“随机”和“多线程”主题,但只找到了如何确保数字始终是随机的解决方案,而不是相反。
编辑:
结果应该就好像基于种子创建了一个随机列表。并且应该在索引为“i”的循环中使用该随机列表来获取伪随机值。因此,在循环中,相同的随机数将基于种子位于索引“i”处。(然而,在整个循环中不应该有一个相同的随机数。但是每个程序运行的顺序应该是相同的。与线程数或哪个线程正在评估循环的一部分无关。)
创建该列表(非多线程)并在多线程循环中使用该初始化列表并不是很有效。对此有什么想法吗?