Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Jean-Marc Bourguet
Pascal writes:
[srand(time(NULL)); avant chaque appel a rand()]
Comment faire?
Il ne faut faire qu'*un* srand par execution (et c'est une bonne idee de logger la valeur qui a servit et d'avoir une option pour specifier la valeur qu'on veut a la place de time(NULL)... ca aide pas mal a avoir des resultats reproduisibles pour les tests et le debug).
A+
-- Jean-Marc FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html Site de usenet-fr: http://www.usenet-fr.news.eu.org
Pascal <teapa5@B022-05.fr> writes:
[srand(time(NULL)); avant chaque appel a rand()]
Comment faire?
Il ne faut faire qu'*un* srand par execution (et c'est une bonne idee
de logger la valeur qui a servit et d'avoir une option pour specifier
la valeur qu'on veut a la place de time(NULL)... ca aide pas mal a
avoir des resultats reproduisibles pour les tests et le debug).
A+
--
Jean-Marc
FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ
C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html
Site de usenet-fr: http://www.usenet-fr.news.eu.org
Il ne faut faire qu'*un* srand par execution (et c'est une bonne idee de logger la valeur qui a servit et d'avoir une option pour specifier la valeur qu'on veut a la place de time(NULL)... ca aide pas mal a avoir des resultats reproduisibles pour les tests et le debug).
A+
-- Jean-Marc FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html Site de usenet-fr: http://www.usenet-fr.news.eu.org
Anthony Fleury
Pascal wrote:
Bonjour,
Bonjour,
J'essaye de générer des nombres aléatoires en C++, ce qui marche moyen. si je fais : srand ( time(NULL) ); cout << ((int)(20.0 * rand()/(RAND_MAX+1.0))); srand ( time(NULL) + (int)(20.0 * rand()/(RAND_MAX+1.0))); cout << (int)(20.0 * rand()/(RAND_MAX+1.0)) << endl;
J'obtiens par exemple : 19 5 19 5 en l'executant rapidement.
Comment faire?
Ne pas réinitialiser le générateur à chaque fois... Le srand() sert à initialiser le générateur de nombre aléatoire à partir d'une valeur qui est ici time(NULL) par exemple pour le premier. Ici il y a de forte chance que le générateur soit repartie du même germe à chaque fois, donc on a logiquement la même valeur en premier (vu que le générateur est pseudo aléatoire).
Anthony -- Alan Turing thought about criteria to settle the question of whether machines can think, a question of which we now know that it is about as relevant as the question of whether submarines can swim. -- Dijkstra
Pascal wrote:
Bonjour,
Bonjour,
J'essaye de générer des nombres aléatoires en C++, ce qui marche moyen. si
je fais :
srand ( time(NULL) );
cout << ((int)(20.0 * rand()/(RAND_MAX+1.0)));
srand ( time(NULL) + (int)(20.0 * rand()/(RAND_MAX+1.0)));
cout << (int)(20.0 * rand()/(RAND_MAX+1.0)) << endl;
J'obtiens par exemple :
19 5
19 5
en l'executant rapidement.
Comment faire?
Ne pas réinitialiser le générateur à chaque fois...
Le srand() sert à initialiser le générateur de nombre aléatoire à partir
d'une valeur qui est ici time(NULL) par exemple pour le premier. Ici il y a
de forte chance que le générateur soit repartie du même germe à chaque
fois, donc on a logiquement la même valeur en premier (vu que le générateur
est pseudo aléatoire).
Anthony
--
Alan Turing thought about criteria to settle the question of whether
machines can think, a question of which we now know that it is about as
relevant as the question of whether submarines can swim.
-- Dijkstra
J'essaye de générer des nombres aléatoires en C++, ce qui marche moyen. si je fais : srand ( time(NULL) ); cout << ((int)(20.0 * rand()/(RAND_MAX+1.0))); srand ( time(NULL) + (int)(20.0 * rand()/(RAND_MAX+1.0))); cout << (int)(20.0 * rand()/(RAND_MAX+1.0)) << endl;
J'obtiens par exemple : 19 5 19 5 en l'executant rapidement.
Comment faire?
Ne pas réinitialiser le générateur à chaque fois... Le srand() sert à initialiser le générateur de nombre aléatoire à partir d'une valeur qui est ici time(NULL) par exemple pour le premier. Ici il y a de forte chance que le générateur soit repartie du même germe à chaque fois, donc on a logiquement la même valeur en premier (vu que le générateur est pseudo aléatoire).
Anthony -- Alan Turing thought about criteria to settle the question of whether machines can think, a question of which we now know that it is about as relevant as the question of whether submarines can swim. -- Dijkstra