Différences entre les versions de rand()

Différences entre les versions de rand() - C++ - Programmation

Marsh Posté le 06-01-2005 à 17:02:47    

Bonjour,
 
Précédemment, dans mon travail de programmation en C++, j'utilisais la fonction rand() (avec gcc2.96) qui me renvoyait un entier entre 0 et 2**31-1.
 
Lorsque j'utilise cette fonction sous Visual6.0, j'ai un entier compris entre 0 et 2**8-1 (ce qui correspond à la description que j'ai eu de cette fonction dans mes cours C/C++).
 
J'aimerais savoir comment remédier à ce problème et quelle serait la déclaration (si elle existe), d'une fonction en C/C++ qui me donnerait en entier, au hasard, entre 0 et 2**31-1.
 
Merci d'avance

Reply

Marsh Posté le 06-01-2005 à 17:02:47   

Reply

Marsh Posté le 06-01-2005 à 17:49:32    

ton prof de C/C++ aurait du te dire que rand() renvoi un entier entre 0 et RAND_MAX.
RAND_MAX étant défini par l'implémentation ...
voir les générateurs aléatoires de boost.

Reply

Marsh Posté le 07-01-2005 à 09:15:55    

Donc, pour une version de compilateur donné, il n'y a pas la possibilité de modifier RAND_MAX afin d'élargir le domaine dans lequel se trouvent les entiers renvoyés ?

Reply

Marsh Posté le 07-01-2005 à 17:28:43    

si tu veux recompiler ta lib standard ... tu dois pouvoir.
Moi, je te le déconseille fortement.

Reply

Marsh Posté le 07-01-2005 à 17:35:46    

La solution du pauvre est de faire 1 appel à rand suivi d'un decalage de bit, un deuxieme appel à rand sans decalage et un + entre le 2 (ou un ou).

Reply

Marsh Posté le 07-01-2005 à 17:39:15    

ça m'étonnerait que ça fasse un bon générateur (pseudo) aléatoire tout ça !
et boost alors ???

Reply

Marsh Posté le 07-01-2005 à 17:42:58    

++fab a écrit :

ça m'étonnerait que ça fasse un bon générateur (pseudo) aléatoire tout ça !
et boost alors ???


 
Ah c'est clair! Mais on est bien dans le 'pseudo' aléatoire... ;)

Reply

Sujets relatifs:

Leave a Replay

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