Generer un nombre réel aleatoirement en java
Résolu/Fermé
ENETCOM
Messages postés
16
Date d'inscription
mercredi 19 juin 2013
Statut
Membre
Dernière intervention
22 juin 2013
-
19 juin 2013 à 23:13
KX Messages postés 16754 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 - 20 juil. 2013 à 19:21
KX Messages postés 16754 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 - 20 juil. 2013 à 19:21
A voir également:
- Generer un nombre réel aleatoirement en java
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel football - Télécharger - Jeux vidéo
- Blocage agriculteur carte en temps réel - Accueil - Transports & Cartes
- Java apk - Télécharger - Langages
- Generer mot de passe - Télécharger - Sécurité
3 réponses
KX
Messages postés
16754
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 020
20 juil. 2013 à 19:21
20 juil. 2013 à 19:21
Dans la mesure où tu veux limiter le nombre de décimales, l'idée de BittarAhmad de considérer qu'au final 0.50 et 0.85 ne sont que les entiers 50 et 85 que l'on aurait divisé par 100, ça permet de faire de la génération aléatoire d'entiers :
Voici un exemple d'utilisation qui va générer un million de valeurs aléatoires et afficher leur fréquence d'apparition. Comme on s'y attend on a bien environ 2.78% pour chacune des valeurs entre 0.50 et 0.85 :
private static final java.util.Random random = new java.util.Random(); public static double alea(double minInclus, double maxInclus, double precision) { long min = Math.round(minInclus/precision); long max = Math.round(maxInclus/precision); long delta = max-min+1; if (delta > Integer.MAX_VALUE) throw new IllegalArgumentException("La précision est trop importante !"); long val = min+random.nextInt((int) delta); return val*precision; }
Voici un exemple d'utilisation qui va générer un million de valeurs aléatoires et afficher leur fréquence d'apparition. Comme on s'y attend on a bien environ 2.78% pour chacune des valeurs entre 0.50 et 0.85 :
public static void main(String[] args) { java.util.Map<Double,Integer> map = new java.util.TreeMap<Double,Integer>(); for (int i=0; i<1e6; i++) { Double x = alea(0.50, 0.85, 0.01); Integer freq = map.get(x); map.put(x, freq==null ? 1 : freq+1); } System.out.println("valeur\tfréquence"); for (java.util.Map.Entry<Double, Integer> entry : map.entrySet()) System.out.println(entry.getKey()+"\t"+entry.getValue()/1e4); }
yoann090
Messages postés
9180
Date d'inscription
mercredi 12 août 2009
Statut
Contributeur sécurité
Dernière intervention
13 avril 2016
1 689
Modifié par yoann090 le 19/06/2013 à 23:19
Modifié par yoann090 le 19/06/2013 à 23:19
Bonjour,
Tu peux utiliser ça : https://www.developpez.net/forums/d75341/java/general-java/api-standards-tierces/collection-stream/math-random-generation-nombre-aleatoire-compris-entre-bornes/
Ou math.random() :
http://www.tutorialspoint.com/java/lang/math_random.htm
En modifiant les bornes pour faire ce que tu veux.
++
Tu peux utiliser ça : https://www.developpez.net/forums/d75341/java/general-java/api-standards-tierces/collection-stream/math-random-generation-nombre-aleatoire-compris-entre-bornes/
Ou math.random() :
http://www.tutorialspoint.com/java/lang/math_random.htm
En modifiant les bornes pour faire ce que tu veux.
++
ENETCOM
Messages postés
16
Date d'inscription
mercredi 19 juin 2013
Statut
Membre
Dernière intervention
22 juin 2013
19 juin 2013 à 23:24
19 juin 2013 à 23:24
Bonjour yoann090 ,merci mais je besoin de générer un nombre réel entre deux intervalle ,en faite nextInt() permet de générer un entier et math.random permet de générer un nombre entre[0,1] .aider moi svp ,merci d'avance
yoann090
Messages postés
9180
Date d'inscription
mercredi 12 août 2009
Statut
Contributeur sécurité
Dernière intervention
13 avril 2016
1 689
>
ENETCOM
Messages postés
16
Date d'inscription
mercredi 19 juin 2013
Statut
Membre
Dernière intervention
22 juin 2013
Modifié par yoann090 le 19/06/2013 à 23:38
Modifié par yoann090 le 19/06/2013 à 23:38
Ben oui je ne vois pas le problème ?
Math.Random() renvoie une valeur entre 0 et 1, donc par exemple
0,85*(math.random()) renvoie une valeur entre 0 et 0,85 et si tu continues a modifier tu obtiens une valeur entre 0,5 et 0,85
Math.Random() renvoie une valeur entre 0 et 1, donc par exemple
0,85*(math.random()) renvoie une valeur entre 0 et 0,85 et si tu continues a modifier tu obtiens une valeur entre 0,5 et 0,85
ENETCOM
Messages postés
16
Date d'inscription
mercredi 19 juin 2013
Statut
Membre
Dernière intervention
22 juin 2013
19 juin 2013 à 23:42
19 juin 2013 à 23:42
comment je veut le modifier pour qu'il soit entre [0.5 , 0.85] ,aider moi svp c'est urgent
yoann090
Messages postés
9180
Date d'inscription
mercredi 12 août 2009
Statut
Contributeur sécurité
Dernière intervention
13 avril 2016
1 689
>
ENETCOM
Messages postés
16
Date d'inscription
mercredi 19 juin 2013
Statut
Membre
Dernière intervention
22 juin 2013
19 juin 2013 à 23:44
19 juin 2013 à 23:44
Ba reflechi un peu...
Sans doute de la forme : Math.random() * (higher-lower)) + lower;
Sans doute de la forme : Math.random() * (higher-lower)) + lower;
ENETCOM
Messages postés
16
Date d'inscription
mercredi 19 juin 2013
Statut
Membre
Dernière intervention
22 juin 2013
>
ENETCOM
Messages postés
16
Date d'inscription
mercredi 19 juin 2013
Statut
Membre
Dernière intervention
22 juin 2013
19 juin 2013 à 23:46
19 juin 2013 à 23:46
higher:0.85 !!!!
lower:0.5 !!!!
lower:0.5 !!!!
BittarAhmad
Messages postés
12
Date d'inscription
mardi 21 mai 2013
Statut
Membre
Dernière intervention
25 juillet 2013
19 juil. 2013 à 11:55
19 juil. 2013 à 11:55
Bonjour à tous,
Oui si tu veux générer un nombre aléatoire entre 0.5 0.85 (0.5 inclus et 0.85 inclus), tu peux tout d'abord générer un nombre aléatoire entre 50 et 85, à la fin du divise sur 100.
Voici un code permettant de générer un nombre aléatoire entre [0.5 0.85]:
Random r = new Random();
int valeurmin= 50; //0.5*100
int valeurmax= 85; //0.85*100
int difference = valeurmax-valeurmin;
difference=difference+1; //pour avoir 0.85 inclus aussi
int valeur = valeurmin + r.nextInt( difference); //tu obtient une valeur entre
[50 85]
float valeur1= (float)valeur;
float mu= valeur1/100; //si par exemple tu obtient aléatoirement la valeur
75, donc la valeur 1 sera 0.75 appartenant à [0.5 0.85].
Bon courage,
Oui si tu veux générer un nombre aléatoire entre 0.5 0.85 (0.5 inclus et 0.85 inclus), tu peux tout d'abord générer un nombre aléatoire entre 50 et 85, à la fin du divise sur 100.
Voici un code permettant de générer un nombre aléatoire entre [0.5 0.85]:
Random r = new Random();
int valeurmin= 50; //0.5*100
int valeurmax= 85; //0.85*100
int difference = valeurmax-valeurmin;
difference=difference+1; //pour avoir 0.85 inclus aussi
int valeur = valeurmin + r.nextInt( difference); //tu obtient une valeur entre
[50 85]
float valeur1= (float)valeur;
float mu= valeur1/100; //si par exemple tu obtient aléatoirement la valeur
75, donc la valeur 1 sera 0.75 appartenant à [0.5 0.85].
Bon courage,