Distribution uniforme c++

imanedaoudi Messages postés 82 Date d'inscription vendredi 20 mai 2005 Statut Membre Dernière intervention 24 octobre 2005 - 6 juin 2005 à 22:46
vdust Messages postés 43 Date d'inscription jeudi 16 décembre 2004 Statut Membre Dernière intervention 14 mars 2007 - 6 juin 2005 à 23:11
bonjour ,
je veux générer des valeurs qui soient plus au moins uniforme et qui ont des valeurs comprise entre deux valeurs extremes xmin et xmax, est ce qu'il y a une fonction qui permet de réaliser cette tache?
merci

4 réponses

vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
6 juin 2005 à 22:59
rand() donne entre 0 et RAND_MAX
0
cs_Joky Messages postés 1787 Date d'inscription lundi 22 novembre 2004 Statut Membre Dernière intervention 31 janvier 2009 2
6 juin 2005 à 23:05
En n'oubliant pas de bien initialisé le temps sinon c'est pas très uniforme :p


void Aurevoir( void ); //Bonne journée
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
6 juin 2005 à 23:07
Si c'est uniforme quand même, mais ca donne toujours les mêmes valeurs.
Mais en l'occurence, pas besoin de valeurs aléatoires, donc pas
forcément besoin d'initialiser non plus
0
vdust Messages postés 43 Date d'inscription jeudi 16 décembre 2004 Statut Membre Dernière intervention 14 mars 2007
6 juin 2005 à 23:11
Si je comprends bien ce que tu cherches, c'est un
générateur de séquences pseudo aléatoires. Sache qu'il existe une
magnifique fonction qui répond au doux nom de 'random()', qui est
initialisée à l'aide de la fonction 'srandom()'. La valeur retournée
par random est un entier entre 0 et une valeur maximale RAND_MAX,
prédéfinie. Pour générer des valeurs entre deux entiers Imin et Imax
(inclus), il suffit d'utiliser la formule suivante




irand = Imin + random()%(Imax - Imin + 1)



Pour générer des nombres réels, il faut ruser, et
choisir le nombre de chiffre significatifs que l'on souhaite voir
apparaître dans le nombre ainsi généré. Pour générer un nombre entre 0
et 1, tu peux utiliser la formule suivante



frand = (float)random() / (float)RAND_MAX




Enfin, pour un nombre entre xmin et xmax, on applique une formule similaire à la première :



frand2 = xmin + (xmax - xmin) * frand



Voilà ! j'espère avoir répondu à ta question ^^



@+ et bon coding


-- Virtual Dust --
0
Rejoignez-nous