Я пишу программу MPI, где я позволяю каждому процессу генерировать свое собственное случайное число в течение прошедшего времени, когда я бы хотел, чтобы какой-то процесс имелидентичные случайные числа , сгенерированные каким-то другим процессом. Например, простой оператор printf:
Process 1 has generated the number 19
Process 2 has generated the number 8
Process 3 has generated the number 19
.
.
Следовательно, процессы 1 и 3 сгенерировали одно и то же случайное число.Кроме того, чтобы гарантировать, что я могу получить идентичное сгенерированное случайное число, я ограничусь только целочисленными значениями, а не значениями типа double или float.
Я написал:
#include <stdio.h>
#include "mpi.h"
#include <stdlib.h>
#include <time.h>
#define numprocess 20
int main(int argc, char *argv[])
{
int rank,size;
int rand_value;
int lower,upper;
MPI_Status status;
MPI_Init(&argc,&argv);
MPI_Comm_rank(MPI_COMM_WORLD,&rank);
MPI_Comm_size(MPI_COMM_WORLD,&size);
upper = 20;
lower = 0;
rand_value = rand()%(upper-lower);
printf("Process %d generated a random number of %d\n",rank,rand_value);
MPI_Finalize();
return 0;
}
, но яполучить вывод:
Process 0 generated a random number of 7
Process 2 generated a random number of 7
Process 8 generated a random number of 7
Process 1 generated a random number of 7
Process 3 generated a random number of 7
Process 4 generated a random number of 7
Process 5 generated a random number of 7
Process 6 generated a random number of 7
Process 7 generated a random number of 7
Process 9 generated a random number of 7
Process 11 generated a random number of 7
Process 10 generated a random number of 7
Process 16 generated a random number of 7
Process 17 generated a random number of 7
Process 19 generated a random number of 7
Process 13 generated a random number of 7
Process 12 generated a random number of 7
Process 18 generated a random number of 7
Process 15 generated a random number of 7
Process 14 generated a random number of 7