Générer des nombres aléatoires

cs_mabrouka Messages postés 4 Date d'inscription mardi 5 août 2003 Statut Membre Dernière intervention 11 octobre 2005 - 6 janv. 2004 à 11:45
cs_JCDjcd Messages postés 1138 Date d'inscription mardi 10 juin 2003 Statut Membre Dernière intervention 25 janvier 2009 - 15 janv. 2004 à 17:36
Bonjour tout le monde , voici mon problème : je veux générer un ensemble de nombres aléatoires compris entre 0 et 1 en utilisant Générateur de type Multiplication avec retenue l'environnement utilisée est visual c++ (MFC)

Merci d'avance.

4 réponses

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
6 janv. 2004 à 11:50
srand(GetTickCount()); // en 1er pour initialiser

int num = rand() & 1; // compris entre 0 et 1

BruNews, ciao...
0
ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
6 janv. 2004 à 12:28
pour avoir des nombres décimaux entre 0 et 1:

float val = ((float)rand())/RAND_MAX;
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
6 janv. 2004 à 12:50
mabrouka je precise egalement que si tu tapais 'aleatoire' par exemple dans la zone de recherche tu eviterais qu'on repete un jour / 2 la meme chose.
Essaie donc la prochaine fois.
BruNews, ciao...
0
cs_JCDjcd Messages postés 1138 Date d'inscription mardi 10 juin 2003 Statut Membre Dernière intervention 25 janvier 2009 4
15 janv. 2004 à 17:36
Le probleme de 'float val = ((float)rand())/RAND_MAX;' est que tout les nombre possible des float ne sont pas donne.

Par exemple si RAND_MAX=3 ...
on a soit 0, soit 0.333..., soit 0.666...

Il est peut-etre preferable de faire bit par bit avec le methode de BruNews : "rand() & 1" ou sinon le faire d'un coup pour tout les bits.

Mais bon, ca c'est pour avoir un vrai Random uniforme sur les reels de [0;1]

Comme de toute maniere RAND_MAX vaut souvent 65535, c'est bon ...

N.B. il ne faut pas aussi caster "RAND_MAX" ???

((float)rand())/((float)RAND_MAX);
0
Rejoignez-nous