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)