bonjour!
je veu une foction qui renvoie un nombre aleatoire de type float ou double.
et merci.
bonjour!
je veu une foction qui renvoie un nombre aleatoire de type float ou double.
et merci.
Mieux que SDL : découvrez SFML
Mes tutoriels 2D/3D/Jeux/C++, Cours et tutoriels C++, FAQ C++, Forum C++.
merci.
je pense que les boost.random peuvent me servir mais le problem j'arrive pas a comprendre comment l'utiliser dans mon programme c c possible un exemple?
Tu as jeté un oeil à la documentation officielle ?
http://www.boost.org/libs/random/
Mieux que SDL : découvrez SFML
Mes tutoriels 2D/3D/Jeux/C++, Cours et tutoriels C++, FAQ C++, Forum C++.
Si tu veux un float entre 0 et 1 ([0,1]) , tu peux toujours faire :
Maintenant tu peux facilement définir les bornes que tu souhaites en utilisant ce type de raisonnement
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 /* Sur [0,1] */ float a = rand() / ( (float) RAND_MAX); //notation C /* Sur [0,1[ */ a = rand() / ( (float) RAND_MAX + 1.0f);
Ici, c'est le forum C++, pas le forum C.j'arrive pas a comprendre comment l'utiliser dans mon programme c
merci millie c simple et efficace pour mon programme
ptetre jé pas bien bien compris ton raisonement pour des bornes[x,y]
mais je pense que ca merche avec ce code
// Sur [0,1]
float a = rand() / ( (float) RAND_MAX);
a=a*[y-x]+x;
En vérité, je pensais plutôt à ça (ce qui permet que ça ne dépend pas de l'écart entre a et b (sauf si ça dépasse RAND_MAX...) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 //entre deux entiers [a,b[ float f = rand() / ( (float) RAND_MAX + 1.0f); //f est un réel dans [0,1[ int e = rand() % (b-a) + a; //e est un entier sur [a,b-1] float g = e + f; //g est un réel sur [a,b[
man 3 rand dit
Ta manière de calculer e est donc déconseillée.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 « Si vous désirez engendrer un entier aléatoire entre 1 et 10, vous devez toujours procéder en utilisant les bits de poids forts, comme dans : j = 1 + (int) (10.0 * (rand() / (RAND_MAX + 1.0))); et jamais ainsi : j = 1 + (rand() % 10); (car cette dernière version utilise les bits de poids faibles). »
Ca dépend de l'implémentation de rand. J'ai donné une technique général, qui peut éventuellement être modifié suivant l'implémentation effective que tu utilises.
Après, si ton man te dit ça, pour ta machine, il vaut mieux faire ça![]()
Partager