1
3
如果你使用C++,你应该考虑使用 Boost library random number classes . 您可以为每个线程创建一个唯一的prng实例。如果需要可重复性,可以使用可重复生成的种子值初始化主线程中的每个实例。 |
2
3
我认为您正在寻找rand_r(),它显式地将当前的rng状态作为参数。然后每个线程都应该有它自己的种子数据副本(您是否希望每个线程以相同的种子开始,还是以不同的种子开始取决于您在做什么,这里您希望它们不同,或者您将一次又一次获得相同的行)。这里有一些关于r and_r()和线程安全的讨论: whether rand_r is real thread safe? . 所以假设您希望每个线程的种子从其线程号开始(这可能不是您想要的,因为每次使用相同数量的线程运行时,它都会给出相同的矩阵,但只是一个示例):
现在,每个线程都在专门修改自己的状态(r and_r()是一个纯函数),您应该可以在家中自由使用。 |
3
0
如果伪随机足够好(参见Ben的评论),那么您可以创建自己的prng(例如mersenne twister,而不是大多数系统使用的弱模方法),并为每个线程实现一个独立的生成器。如果这样做,必须确保每个生成器都有不同的种子。 |
4
0
一个真正的问题是如果你想要再现性,这在测试中是经常需要的。使用给定的种子生成一系列线程种子。然后每个线程将使用自己的种子来生成数字。
事实是
|
ecology · 基于R中随机生成数集的子集列 2 年前 |
Alan Jones · 使用random从列表创建动态列表 2 年前 |
breking bed · 单击按钮时如何随机选择唯一编号 2 年前 |
Carrot Man · 如何让熊猫数据框随机填充1和0? 2 年前 |
Justin Arnold · 范围内的随机数不是随机数 2 年前 |
Menna Magdy · 如何使用非模型字段进行过滤? 2 年前 |