J'ai créé une méthode pour créer des doubles valeurs aléatoires par exemple 10 valeurs: num1, num2, ... num10 dont la somme de ces 10 valeurs est 1: num1 + num2 + ... + num10 = 1 Ma méthode est comme la méthode dans le forum
Getting N random numbers that the sum is M:aide pour une affectation java
private static double[] randSum(int n, double m) {
Random rand = new Random();
double randNums[] = new double[n], sum = 0;
for (int i = 0; i < randNums.length; i++) {
randNums[i] = rand.nextDouble();
sum += randNums[i];
}
for (int i = 0; i < randNums.length; i++) {
randNums[i] /= sum * m;
}
return randNums;
}
mais cette méthode créer très longs nombres comme: 0,18593711849349975 J'ai même utilisé la méthode Math.round() mais avec cette méthode mes chiffres sont 0,0, 0,5, 0,0, ... J'ai besoin de nombres de 0.01 à 0.99 ou de 0.1 à 0.9. Si j'utilisais des nombres entiers, je pourrais le faire avec quelque chose comme Random.nextInt (0.98) +0.01, mais la méthode nextDouble() n'accepte pas les paramètres, comment puis-je faire cela? Pourriez vous m'aider s'il vous plait? merci
Je vous suggère de reconsidérer le titre de cette question, pour le rendre plus significatif. En outre, reconsidérez certains de vos noms de variables. «n» et «m» ne signifient pas beaucoup pour le lecteur. –