Rand() dans c++

Résolu
mrd9991 Messages postés 224 Statut Membre -  
mrd9991 Messages postés 224 Statut Membre -
Bonjour,
je suis en train de programmer en c++ avec dev-c++, et lorsque j'utilise la fonction rand() pour générer
des nombres aléatoires la valeur max (RAND_MAX)que la germe peut donner correspond au max de type short 32767, et donc je ne peut pas générer des nombres supperieure à 32767, merci de m'aider si vous connaissez une solution, à plus.

4 réponses

fiddy Messages postés 11653 Statut Contributeur 1 847
 
Salut,
Il n'existe pas de solutions standards. A toi de te faire la fonction.
Si RAND_MAX vaut 32767, tu sauvegardes le résultat de rand dans une variable, tu lui fais subir une rotation à droite de 15 bits et tu raditionnes avec rand.
Ce qui donne pour un long long par exemple :
long long toto=rand();
toto<<=15;
toto+=rand();

Cdlt
2
Char Snipeur Messages postés 10112 Statut Contributeur 1 299
 
Question con : et si tu les multiplies ?
0
fiddy Messages postés 11653 Statut Contributeur 1 847
 
La multiplication ne permettra pas une répartition équiprobable.
0
mrd9991 Messages postés 224 Statut Membre 7
 
salut, merci tous les deux pour vos réponses, de la manipulation je sais faire,mais ce que je voulais savoir c'est est ce que il existe une instruction (fonction , mot clé) en c++ qui permet de modifier la fonction rand(), mais sa n'existe pas. merci encore une fois, et à plus.
0
Char Snipeur Messages postés 10112 Statut Contributeur 1 299
 
ça dépend ce que tu entends par modifier.
Il y a srand() qui permet de modifier la suite pseudo aléatoire.
0
mrd9991 Messages postés 224 Statut Membre 7
 
salut, merci mon ami pour votre réponse, ce que je voulais savoir si par exemple on peut faire rand(double)
pour générer directement des nombres réels peudo-aliatoires, mais je pense que ça n'existe pas, la seule methode c'est de faire de la gymnastique,et merci encore pour l'information sur srand(), et au revoir.
0