bonjour
j'ai un ensemble E1 de vecteur et je veux choisir alétoirement un ensemble de vecteur E2 car E1 est énorme comment le faire.merci
bonjour
j'ai un ensemble E1 de vecteur et je veux choisir alétoirement un ensemble de vecteur E2 car E1 est énorme comment le faire.merci
tu peux récupérer un nombre aléatoire par Math.random() qui te fourni un nombre aléatoire entre 0 et 1 si je ne me trompe pas
Ensuite il suffit d'appeler la méthode get(num) de ton vecteur ...
"Math.random() qui te fourni un nombre aléatoire entre 0 et 1 "
comment je peux à partir de ce nombre qui est entre 0 et 1 obtenir un ensemble
par exemple de 200 vecteurs.
en le multipliant par le nombre d'elements max
{ 0 < Random < 1 } * 200 = 0*200 < Random*200 < 1*200 = 0 < Random souhaité < 200
![]()
te fourni un nombre entre 0 et la taille de ton vecteur -1
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 int random = (int)(Math.random() * (e1.size())) ;
Ensuite il suffit de faire
Faut juste faire attention aux doublons eventuels
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 e2.add(e1.get(random));
Pour eviter les tirage doubles, il te faut creer un tableau avec l'eneble des valuers a tirer, faire un random sur la taille du tableau, choisir l'element a l'indice tiré, le supprimer de la liste reduire le tableau de 1 et relancer le processus.
mon vecteur ne contient pas de double,je vais essayer ta méthode. merci
Il n'y a pas en java une autre syntaxe qui evite de multiplier par le nombre ?
De tete , il y a un :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Random r= new Random(); int nb = r.nextInt(500); // nombre entre 0 & 500
(Désolé de la syntaxe TRES TRES approximative..., Random ? Rand ???)
j'en sais rien ... mais c'etait la methode sous c et Delphi.
En meme temps ce n'est pas ca qui va rendre le code illisible et a mon avis la fonction toute faite ne feras rien de plus![]()
Ben l'avantage également c'est que tu n'initialises l'objet Random qu'une fois et pas à chaque tirage, donc tu te contentes de tirer les nombre apres .
Et comme l'objet rand n'est pas vraiment random mais qu'il se base sur l'heure implicitement , dans le cas d'une boucle tres rapide ... tu tires aléatoirement mais au final comme c'est la meme heure tu as le meme résultat... ( je parle par expérience là )
Certes mais que tu tire sur [0-1] ou [O-N] c'est kiff kiff ....
On a bien une seule instance de "Random" qui est initialisée par application.Envoyé par Math.random
Pas dans l'exemple qui était donné
Code : Sélectionner tout - Visualiser dans une fenêtre à part int random = Math.random(); // int random est un nombre ici et pas un objet random
Oui mais tu oublie que le code proposé est tiré de la classe Math de Java elle meme
c'est donc bien le code de Maths.random que j'ai fourni.
Et lors du premer appel, Java initialise la variable statique Random et y fait appel a chaques nouvel appel.
La fonction java manipule donc bien une seule et meme instance de la classe Random partout dans l'applciation et ce tout au long de l'execution de ton application.
Il y a donc tres peu (pas ?) de chance de tomber sur 2 suite identiques contrairement aux anciens programmes en C.
Partager