Generer un nombre réel aleatoirement en java
Résolu
ENETCOM
Messages postés
19
Statut
Membre
-
KX Messages postés 19031 Statut Modérateur -
KX Messages postés 19031 Statut Modérateur -
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
- Jeux java itel - Télécharger - Jeux vidéo
- Waptrick java football - Télécharger - Jeux vidéo
- Eclipse java - Télécharger - Langages
- Waptrick java voiture - Télécharger - Jeux vidéo
- Java apk - Télécharger - Langages
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,