A voir également:
- Math.random java
- Java math.random - Meilleures réponses
- [JAVA] Math.random() ✓ - Forum - Programmation
- Garder la même valeur de Math.random() - java ✓ - Forum - Java
- Math.random() ✓ - Forum - Programmation
- JAVA Math.random() - Forum - Java
- Java et Math.random() - Forum - Java
5 réponses
HackTrack
- Messages postés
- 618
- Date d'inscription
- vendredi 26 juillet 2002
- Statut
- Membre
- Dernière intervention
- 13 juillet 2013
Salut!
Extrait de la Javadoc de la class Math:
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:
;-)
HackTrack
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
narco
int lower = 12;
int higher = 29;
int random = (int)(Math.random() * (higher+1-lower)) + lower;
et ton probleme est résolu
int higher = 29;
int random = (int)(Math.random() * (higher+1-lower)) + lower;
et ton probleme est résolu
Lonely
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.
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.
anne onyme
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.
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.
j'ai reçu ton message et la méthode que tu as proposé été une bonne solution ça marche tres bien. merci