générer une suite (très grande) de nombre aléatoire - C++ - Programmation
Marsh Posté le 09-05-2004 à 18:47:20
faut au moin 5 seconde d'attente avant qu'elle sorte un nouveau nombre
mon cul
Marsh Posté le 09-05-2004 à 20:33:25
Ben faut utiliser srand() avant chaque appel de rand()
Marsh Posté le 09-05-2004 à 20:33:56
printf a écrit : Ben faut utiliser srand() avant chaque appel de rand() |
mon cul
Marsh Posté le 09-05-2004 à 20:34:32
schnapsmann a écrit : mon cul |
J'ai dit une connerie
Marsh Posté le 09-05-2004 à 20:35:31
printf a écrit : J'ai dit une connerie |
t'initialise une seule fois la graine, ça suffit garçon
Marsh Posté le 09-05-2004 à 20:36:54
schnapsmann a écrit : t'initialise une seule fois la graine, ça suffit garçon |
Oups
EDIT : mais pourquoi il lui faut 5 secondes à lui, aussi ?
Marsh Posté le 09-05-2004 à 20:37:26
Marsh Posté le 09-05-2004 à 20:38:03
ReplyMarsh Posté le 09-05-2004 à 22:10:59
Peut etre qu'il n'a vraiment pas de chance pour qu'a fois qu'il appelle rand(), la fonciton lui retourne le même nombre
Vraiment pas de chance...
Marsh Posté le 09-05-2004 à 23:13:10
neogally a écrit : c'etait un troll c pas grav... |
Je me suis ridiculisé pour un vulgaire troll
Marsh Posté le 10-05-2004 à 01:56:17
ReplyMarsh Posté le 10-05-2004 à 03:22:08
printf a écrit : Oups |
Rien a voir avec rand, c'est sûr
Ou alors un rand à roulette
->[.]
Marsh Posté le 10-05-2004 à 04:45:56
thermocline a écrit : Rien a voir avec rand, c'est sûr |
Serait-ce une subtile allusion au PRNG à base de roulette conçu par la RAND Corporation ?
Marsh Posté le 10-05-2004 à 10:57:05
5 secondes environ oui.
Voila ma fonction:
int GetRandom(int min, int max)
{
srand(time(NULL));
return rand() % (max + 1 - min) + min;
}
Marsh Posté le 10-05-2004 à 11:13:17
non j'exagère j'ai refais un teste et ca prend 1 à 2 seconde mais c'est trop lent! faut que ca le fasse 1 fois par instruction.
Marsh Posté le 10-05-2004 à 11:16:29
la lenteur vient d'ailleurs c'est certain... (ah c'était donc pas un troll )
Marsh Posté le 10-05-2004 à 11:17:55
1 à 2s pour ça tu dois vraiment avoir 1 machine de merde là quand même...:heink:
Comme dit plus haut :
1) Appelle srand 1 seule fois au début de ton prog.
2) ensuite utilise directement ton rand(), un appel de fonction ça prend toujoursn un peu de temps...
Marsh Posté le 10-05-2004 à 11:24:21
On peut avoir la config de la machine ?
Parce que un 8088 underclocké c pas prévu pour ca à la base
Marsh Posté le 10-05-2004 à 11:26:58
skeye a écrit : 1 à 2s pour ça tu dois vraiment avoir 1 machine de merde là quand même...:heink: |
ah enfin les chiffres défilent normalement! C'etait tout con en fait! Merci pour l'aide
Marsh Posté le 10-05-2004 à 11:39:56
srand(time(null)) <= responsable !
Et puis le générateur interne est pas terrible sous VC++ 6.0
si tu veux une initialisation un peu meilleire : srand(clock())
Sinon en faisant un hash du time(null) et en envoyant le tout à srand, cela marche déjà mieux.
Marsh Posté le 10-05-2004 à 12:08:19
ah non c'est pas si simple! le srand() il faut le mettre avant chaque appel de rand() sinon il renvoie toujours la même liste de nombre!
Marsh Posté le 10-05-2004 à 12:12:07
bkadoum a écrit : ah non c'est pas si simple! le srand() il faut le mettre avant chaque appel de rand() sinon il renvoie toujours la même liste de nombre! |
non.
Voir la réponse précédente de christophe_d13...il faut l'initialiser un peu mieux, stout.
Marsh Posté le 10-05-2004 à 12:13:51
christophe_d13 a écrit : srand(time(null)) <= responsable ! |
ouais ta première solution est beacoup plus rapide mais pas encore assez. Si j'initialise 10 chiffres à la suite ils ont tous la même valeur.
Comment tu hash le time(NULL)???
Marsh Posté le 09-05-2004 à 18:44:59
Je dois générer une suite de nombre aléatoire au début de mon programme.
La fonction rand() pourrait encore aller mais elle génére trop lentement, il faut au moin 5 seconde d'attente avant qu'elle sorte un nouveau nombre. Ca veut dire que si j'attend que le nombre soit différent avant d'initialiser chacune de mes varaibles, il faudrait attendre au moin une heure avant que mon programme démarre!
Comment faire pour qu'a chaque fois qu'on lance rand(), elle renvoie un nouveau nombre? Est-ce qu'il faut utiliser d'autre méthode? j'ai jeté un oeuil aux librairies Boost mais c'est du charabiat pour moi et ca fait des erreurs à la compilation.