我总是画随机数,比如,
srand(time(NULL)) // seed with current time
...
double rnum = 1.0*rand()/RAND_MAX; // convert to [0.0,1.0]
而且我从来没有遇到过任何问题。我目前正在运行多达数百个内核的并行代码,它们似乎具有相同的“随机”数字系列,大概是因为它们都是同时开始的(或非常相似的时间)。
在处理器之间随机化的好方法是什么?
我可以访问每个处理器的 ID,所以我正在考虑使用类似的东西,
srand(time(NULL)*(pG->my_id+1)) // +1 incase my_id == 0
但我并不确切地知道播种是如何工作的——所以我有点担心整数乘数(尤其是 2 倍?)不够“随机”(注意:我没有足够随机的具体标准)。