奇怪的相同数字

adb*_*dba 0 c++ random optimization mpi

我使用一些随机数作为我的"元启发式优化"计算的初始值.我使用MPI在不同的计算机上运行相同的优化程序.令人惊讶的是,我获得了很多相同的结果.例如,我使用40台主机,结果几乎没有不同的值.几乎6-7个值是相同的.实际上,我的结果可能相似,但它们必须不相同,因为我在程序开头给出了随机数作为首字母(在上面的例子中,我必须得到40个不同的值).如果我在同一台计算机上重复并顺序运行程序,它会产生不同的结果.

我怀疑这种情况是由随机数生成质量不足引起的.我怎么解决这个问题.我打开其他想法,可能会有不同的事情导致这个问题.

PS我srand( (unsigned) time(NULL) )在程序开始时使用一次来生成随机数字.然后,我通过使用生成[0,1]范围内的随机数(float)rand()/32767

我抱怨的结果的一个例子:

15.42161751
19.83328438
3.43446541
23.50453377
23.50453377
3.43446541
19.83328438
23.50453377
3.43446541
7.52127457
7.52127457
23.50453377
7.52127457
7.52127457
23.50453377
19.83328438
19.83328438
19.83328438
7.52127457
15.42161751
3.43446541
19.83328438
19.83328438
15.42161751
23.50453377
23.50453377
5.29145241
19.83328438
19.83328438
19.83328438
19.83328438
7.52127457
23.50453377
3.43446541
19.83328438
23.50453377
7.52127457
3.43446541
7.52127457
5.29145241
Run Code Online (Sandbox Code Playgroud)

eye*_*and 6

随机数发生器可以接收相同的种子值.

我的建议是为计算机,计算机名称或MAC地址创建一个唯一标识符的哈希值,并从时间()返回到xor.