我正在使用 MPICH2 来实现“奇偶”排序。我进行了实现,但是当我将他的值随机分配给每个进程时,相同的数字会随机分配给所有进程。
这是每个进程的代码,每个进程随机化他的值..
int main(int argc,char *argv[])
{
int nameLen, numProcs, myID;
char processorName[MPI_MAX_PROCESSOR_NAME];
int myValue;
MPI_Init(&argc,&argv);
MPI_Comm_rank(MPI_COMM_WORLD,&myID);
MPI_Comm_size(MPI_COMM_WORLD,&numProcs);
MPI_Get_processor_name(processorName,&nameLen);
MPI_Status status;
srand((unsigned)time(NULL));
myValue = rand()%30+1;
cout << "myID: " << myID << " value: " << myValue<<endl;
MPI_Finalize();
return 0;
}
为什么每个进程都得到相同的值?
编辑:感谢您的回答:)
我换了行
srand((unsigned)time(NULL));
至
srand((unsigned)time(NULL)+myID*numProcs + nameLen);
它为每个进程提供了不同的值:)