Generer un nombre réel aleatoirement en java
Résolu
ENETCOM
Messages postés
16
Date d'inscription
Statut
Membre
Dernière intervention
-
KX Messages postés 16761 Date d'inscription Statut Modérateur Dernière intervention -
KX Messages postés 16761 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour
aider moi svp je besoin d'un code java qui permet de générer aléatoirement une valeur réel entre l'intervalle[0.5 , 0.85] .
aider moi svp je besoin d'un code java qui permet de générer aléatoirement une valeur réel entre l'intervalle[0.5 , 0.85] .
A voir également:
- Generer un nombre réel aleatoirement en java
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel - Télécharger - Jeux vidéo
- Eclipse java - Télécharger - Langages
- Java apk - Télécharger - Langages
- Waptrick java voiture - Télécharger - Jeux vidéo
3 réponses
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); }
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.
++
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,