Différences entre les versions de rand() - C++ - Programmation
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.
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 ?
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.
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).
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 ???
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 ! |
Ah c'est clair! Mais on est bien dans le 'pseudo' aléatoire...
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