C++中的快速多线程随机序列
Fast multithreaded random sequence in C++
我需要在多线程循环中使用随机,但在每个循环中都需要相同的值,而与哪个线程正在评估该循环无关。
没有多线程,我可以做到:
seed(1)
for (unsigned int i=0; i<100; i++){
rand()
}
在循环中,每次调用rand()都会返回一个新的伪随机值。现在我想创建相同的列表多线程。
主要原因是我需要相同的伪随机数序列,与循环的顺序无关(所以更像是基于循环中的"I")。
注意:我已经研究了许多"随机"answers"多线程"主题,但只找到了如何确保数字始终是随机的解决方案,而不是相反。
编辑:
结果应该是基于种子创建了一个随机列表。该随机列表应该在索引为"i"的循环中使用,以获得伪随机值。因此,在循环中,相同的随机数将位于基于种子的索引"i"处。(然而,在整个循环中不应该有一个相同的随机数。但每个程序运行的顺序应该相同。与线程数量或哪个线程正在评估循环的一部分无关。)
创建该列表(非多线程)并在多线程循环中使用初始化的列表不是很有效。对此有什么想法吗?
使用任何非STDC随机数生成器,具有单独可管理的状态。我建议这样做:http://www.boost.org/doc/libs/1_52_0/doc/html/boost_random.html
您需要一个基于计数器的随机生成器,而不是全等生成器。这里有一份很好的文件解释了它们的工作原理:
http://www.thesalmons.org/john/random123/papers/random123sc11.pdf
相关文章:
- 在C++中使用cURL和多线程
- 多线程双缓冲区
- 为什么我的多线程作业队列崩溃
- 在main()之外初始化std::vector会导致性能下降(多线程)
- 试图创建一个多线程程序来查找0-100000000之间的总素数
- 为什么一个向量上的多线程操作很慢
- 学习多线程C++:添加线程不会使执行速度更快,即使它看起来应该
- 全局变量 多读取器 一个写入器多线程安全?
- boost::文件系统::recursive_directory_iterator多线程安全
- 如何阻止TensorFlow的多线程
- 如何在多线程中正确使用unique_ptr进行多态性?
- 并发/多线程:是否可以以这种方式生成相同的输出?
- sigwait() 在多线程程序中不起作用
- 多线程程序中出现意外的内存泄漏
- 静态 constexpr 类成员变量对多线程读取是否安全?
- 多线程比没有线程C++慢
- 使用OpenSSL和锁随机崩溃的多线程程序
- 随机密码生成器上的 OpenMP 多线程
- 多线程中提升 asio 中的随机 EOF
- C++中的快速多线程随机序列