générer une suite (très grande) de nombre aléatoire

générer une suite (très grande) de nombre aléatoire - C++ - Programmation

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.

Reply

Marsh Posté le 09-05-2004 à 18:44:59   

Reply

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 :o

Reply

Marsh Posté le 09-05-2004 à 20:11:46    

:heink:

Reply

Marsh Posté le 09-05-2004 à 20:17:12    

c koi c connerie.....:pfff:
 

Reply

Marsh Posté le 09-05-2004 à 20:19:31    

on tient un winner la !!

Reply

Marsh Posté le 09-05-2004 à 20:33:25    

Ben faut utiliser srand() avant chaque appel de rand() [:spamafote]


---------------
Un matin je me lèverai et il fera beau.
Reply

Marsh Posté le 09-05-2004 à 20:33:56    

printf a écrit :

Ben faut utiliser srand() avant chaque appel de rand() [:spamafote]


 
mon cul  :o


---------------
From now on, you will speak only when spoken to, and the first and last words out of your filthy sewers will be "Sir!"
Reply

Marsh Posté le 09-05-2004 à 20:34:32    


 
J'ai dit une connerie :??:


---------------
Un matin je me lèverai et il fera beau.
Reply

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  :o


---------------
From now on, you will speak only when spoken to, and the first and last words out of your filthy sewers will be "Sir!"
Reply

Marsh Posté le 09-05-2004 à 20:36:54    

schnapsmann a écrit :

t'initialise une seule fois la graine, ça suffit garçon  :o


 
Oups [:joce]
 
EDIT : mais pourquoi il lui faut 5 secondes à lui, aussi ? :o


Message édité par printf le 09-05-2004 à 20:37:28

---------------
Un matin je me lèverai et il fera beau.
Reply

Marsh Posté le 09-05-2004 à 20:36:54   

Reply

Marsh Posté le 09-05-2004 à 20:37:26    

[:lorill]


---------------
From now on, you will speak only when spoken to, and the first and last words out of your filthy sewers will be "Sir!"
Reply

Marsh Posté le 09-05-2004 à 20:38:03    


 
mon cul [:totoz]


---------------
Un matin je me lèverai et il fera beau.
Reply

Marsh 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...


---------------
Cordialement, Xterm-in'Hate...
Reply

Marsh Posté le 09-05-2004 à 22:13:35    

impossible.

Reply

Marsh Posté le 09-05-2004 à 22:53:06    

c'etait un troll c pas grav...

Reply

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 [:tinostar]


---------------
Un matin je me lèverai et il fera beau.
Reply

Marsh Posté le 10-05-2004 à 00:45:16    

je suis pas sur que ce soit un troll c'est ça le pire xD

Reply

Marsh Posté le 10-05-2004 à 01:56:17    

printf a écrit :

Je me suis ridiculisé pour un vulgaire troll [:tinostar]


 
 :sweat: c des choses qui arrivent  [:spamafote]

Reply

Marsh Posté le 10-05-2004 à 03:22:08    

printf a écrit :

Oups [:joce]
 
EDIT : mais pourquoi il lui faut 5 secondes à lui, aussi ? :o


 
Rien a voir avec rand, c'est sûr
 
Ou alors un rand à roulette
 
->[.]

Reply

Marsh Posté le 10-05-2004 à 04:45:56    

thermocline a écrit :

Rien a voir avec rand, c'est sûr
 
Ou alors un rand à roulette
 
->[.]


 
Serait-ce une subtile allusion au PRNG à base de roulette conçu par la RAND Corporation ? :o


---------------
Un matin je me lèverai et il fera beau.
Reply

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;
}

Reply

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.

Reply

Marsh Posté le 10-05-2004 à 11:16:29    

la lenteur vient d'ailleurs c'est certain... (ah c'était donc pas un troll :sweat: )

Reply

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...

Reply

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 :)

Reply

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:
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...


 
ah enfin les chiffres défilent normalement! C'etait tout con en fait! Merci pour l'aide

Reply

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.

Reply

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!

Reply

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.

Reply

Marsh Posté le 10-05-2004 à 12:13:51    

christophe_d13 a écrit :

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.


 
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)???

Reply

Marsh Posté le 10-05-2004 à 12:16:00    

mais on te dis d'initialiser qu'une seule fois

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed