3) Concernant la graine de départ de la séquence rand(). Si je regarde ceci:
Code:
1 2 3 4
|
srand(1);
for (int j=1; j<4;j++)
printf("random %d = %d\n", j, rand()); |
alors j'obtiens :
random 1 = 1804289383
random 2 = 846930886
random 3 = 1681692777
Si je prends le même code en mettant srand(2) à la place de srand(1), et en n'affichant que les deux premiers résultats, soit
Code:
1 2 3 4
|
srand(2);
for (int j=2; j<4;j++)
printf("random %d = %d\n", j, rand()); |
j'obtiens alors
random 2 = 1362961854
random 3 = 8891098
Je pensais pourtant obtenir les deux mêmes résultats qu'avec srand(1), comme si la suite partait du deuxième nombre pseudo-aléatoire de la séquence. C'est-à-dire :
random 2 = 846930886
random 3 = 1681692777
Mais ce n'est pas le cas, du coup je me posais une question très naïve. Je dois lancer des simulations de Monte Carlo en multi processus avec MPI/OpenMP. Plutôt que de choisir des graines dépendant du temps et du rand du processus, suffirait-il de choisir une graine du genre srand(MPI_rank) ? Je sens bien que c'est faux et ça sent l'entourloupe à plein nez, mais ça m'interroge quand même. :)
Merci beaucoup pour vos réponses et bonne fin de week end !