Posez votre question Signaler

[JAVA] Math.random() [Résolu/Fermé]

ysf.b 6Messages postés samedi 17 février 2007Date d'inscription 30 janvier 2009Dernière intervention - Dernière réponse le 17 févr. 2011 à 10:05
Salut tout le monde
svp la valeur retourner avec la méthode Math.random()
en java est comprise entre -
0<= Math.random() <=1
ou
0<= Math.random() <1
ou
0< Math.random() <1
Merci
Lire la suite 
Réponse
+110
moins plus
Salut!

Extrait de la Javadoc de la class Math:

@return  a pseudorandom double greater than or equal  to 0.0 and less than 1.0.


Pour Yahyamed:

il n'y a vraiment pas une grande chance d'avoir un nombre plus grand que 1.... je dirais même aucune chance puisque l'implémentation de la foction Math.random() retourn une valeur entre 0 inclu et 1 exclus!

Si tu veux par exemple générer un nombre entier entre 12 (inclus) et 29 (exclus), procède comme ceci:

int lower = 12;
int higher = 29;

int random = (int)(Math.random() * (higher-lower)) + lower;


;-)
HackTrack

Yahyamed- 1 mai 2007 à 13:35
Salut HackTrack!
j'ai reçu ton message et la méthode que tu as proposé été une bonne solution ça marche tres bien. merci
matheux- 15 mai 2008 à 13:04
attention les deux valuers extremes (12 et 29) auront deux fois moins de chance d'etre selectionnees que les autres.
Annonces
 
moins plus
Réponse
+22
moins plus
int lower = 12;
int higher = 29;

int random = (int)(Math.random() * (higher+1-lower)) + lower;

et ton probleme est résolu

Lonely- 17 mars 2009 à 19:40
Salut,

Si tu fais ça, tu inclus peut être 29 mais tu exclus 12. Il suffit donc de faire:

Int lower = 12;
int higher = 29;

higher++;

int random = (int)(Math.random() * (higher-lower)) + lower;

NB: (int) nombre fait une troncature et pas un arrondi. Les nombre extrêmes qui sont 12 et 29 ont autant de chances d'apparaitre que les autres. Pour preuve, System.out.println((int)10.9); renvoie 10.
Lonely- 17 mars 2009 à 19:43
Nan, j'ai dit des bêtises ^^ autant pour moi... Ca revient au même en fait.
gayou67- 14 avril 2009 à 20:45
Et non ça ne revient pas au même il faut bien mettre le +1 sinon on ne pourra jamais obtenir le 29.
Lonely- 16 avril 2009 à 17:18
Si ca revient au meme,

la seule différence c'est que au lieu de l'additionner dans la ligne de calcul, j'ai incrémenté higher (ecrit en gras)
Annonces
 
moins plus
Réponse
+10
moins plus
Petite précision aux réponses très complètes ci dessus.
Math.radom() renvoie une valeur entre 0,.... (c'est à dire une valeur proche de 0 mais positif et de même pour le 1 ce ne pas exactement 1 mais une valeur proche de 1.

Autrement dis :

D'un point de vue mathématique :

On peut modélisé Math.random() comme l'obtention d'une valeur x aléatoirement entre ]0;1[. outre l'imprécision dont on a parlé plus haut. ce modèle diffère d'un point de vue probabiliste par l'absence du concept de densité.

En effet, on rappelle que R est dense dans Z : Ce qui veut dire que quelque soit deux réels différents (appelons les a et b et trions les de la manière suivante a<b) avec a et b compris dans l'intervalle [n;n+1] avec n un entier : Il existe une infinité de réels compris dans l'intervalle [a;b].

Cette densité à pour conséquence qu'un réel peut avoir autant de décimal que l'on désire. Ce qui n'est pas réalisable en informatique.

Donc : prenons z un réel de la forme : n+m.10^-x . Avec n et m des naturel et x un réel. Pour x suffisamment grand (ce cap dépend de l'ensemble sur lequel on travail c'est à dire les double avec Math.rand) z est inconnu de java. Donc la probabilité d'obtenir un résultat appartenant à ]z-e;z+e[ (pour un certain e plus petit qu'un certain cap) est nulle. En réalité l'ensemble des double n'étant pas dense dans lui même la probabilité d'obtenir avec Math.random() un résultat particulier appartenant à la projection des double sur l'intervalle ]pseudo 0 ; pseudo 1[est non-nulle.

Réponse
+9
moins plus
si tu veux retourner double: Min + (Math.random() * (Max - Min))
si tu veux retourner int: Min + (int)(Math.random() * ((Max - Min) + 1))

Réponse
+4
moins plus
je crois que la réponse est 0<= Math.random() <1

mais il y a tellement de possibilité de chiffres que de toute façon, la probabilité d'avoir 0 est infinitésimal, que les bornes soient inclues ou non ne change pas grand chose...

Ce document intitulé «  [JAVA] Math.random()  » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.