Bonjour,
j'essaye de dev un script qui me permettrait de selectionner une valeur aléatoire en prenant compte de son poids.
Je m'explique :
J'ai dans un fichier texte :
Valeur1||10
Valeur2||1
Valeur3||4
En suivant les poids des valeurs, la Valeur1 devrait sortir plus fréquement que la Valeur3 qui elle même sortira plus fréquement que la Valeur2.
D'après ce qu'on m'a dit, il faut que je fasses la somme de tous les poids et que tu tires un nombre entre zero et cette somme - 1.
Et Ensuite, attribuer a chaque valeur un interval correspondant a son poids :
de 0 à 9 : valeur 1
de 10 à 10 : valeur 2
de 11 à 14 : valeur 3
Pour la somme j'y suis arrivé, par contre je bloque au moment de faire correspondre la valeur rand issue du random à une des valeur de mon fichier texte :
Code :
- String nomFic = "fichier.txt";
- FileReader fr = new FileReader(nomFic);
- BufferedReader buf = new BufferedReader(fr);
-
- String ligne = buf.readLine();
- int total = 0;
-
- while (ligne != null) {
- StringTokenizer st = new StringTokenizer(ligne, "||" );
- String[] val = new String[2];
- int i=0;
- while(st.hasMoreElements()){
- val[i] = st.nextToken();
- i++;
- }
- int poids= Integer.parseInt(val[1]);
- total += poids;
-
- ligne = buf.readLine();
- }
-
- int rand= (int)Math.floor(Math.random()*(total-1));
- System.out.println(rand);
- // Faire correspondre la valeur de rand à une dés valeur de mon fichier ...
-
- fr.close();
|
Dans mon fichier j'ai :
Valeur1||10
Valeur2||1
Valeur3||4
Dans si rand = 10, je devrais avoir la valeur Valeur2.
Qq'un aurait une idée sur comment je peux faire pour avancer ?
Merci d'avance
Message édité par yobogs le 17-03-2005 à 14:26:49