begin process at 2012 02 12 23:08:20
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive Java

 > 

Archives

 > 

Maths & Algorithmes

 > 

Generation nombre aléatoire parmis liste


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Generation nombre aléatoire parmis liste

dimanche 24 août 2003 à 15:34:57 | Generation nombre aléatoire parmis liste

Sw1tch

Salut,

J'aimerais pouvoir générer un nombre aléatoire parmis une liste.

Je prends un nombre aléatoire entre 1 et 78 avec (int)(Math.random() *78 + 1) ;
Ensuite, j'aimerais que ce nombre disparaisse des possibilité. Par exemple si j'ai recu 54, le prochain nombre généré doit être entre 1 et 78 SAUF 54. Je doit générer absolument les 78 chiffres, seule l'ordre doit etre aléatoire.

J'ai fait un petit test. Si le nombre est pris, je lui mets une variable à false s'il est libre true.
Et je génère un nombre aléatoire dans un do{} while tant que la variable relative au nombre = false .

Seul problème plus je génère de chiffres, plus les possibilités sont restreinte alors que la fonction continue avec des nombres de 1 à 78. Resultat j'arrive à la fin à une boucle quasi-infinie.

Si qqun a une solution je suis preneur :-)
dimanche 24 août 2003 à 17:30:46 | Re : Generation nombre aléatoire parmis liste

Dobel

Salut
2 petites méthodes. je sais pas laquelle est la + rapide
la 2ème utilise le Vector de java.util donc c'est peut-être un peu plus lourd



int[] liste = new int[78];//liste des 78 nombres
int[] listeAleat = new int[78];//liste mélangée
int[] liste2;//liste intermédiaire
for (int i=0; i<78; i++) liste[i]=i+1;
for (int i=0; i<78; i++) {
int n = (int)(Math.random()*(78-i)+1)-1;
listeAleat[i] = liste[n];
liste2 = new int[liste.length-1];
for (int j=0; j<n; j++) {
liste2[j] = liste[j];
}
for (int j=n; j<liste2.length; j++) {
liste2[j] = liste[j+1];
}
liste = liste2;
}
for (int i=0; i<78; i++) {
System.out.print(listeAleat[i]+" ");
}


et la 2ème :

Vector liste = new Vector();
int[] listeAleat = new int[78];
for (int i=0; i<78; i++) liste.add(new Integer(i+1));
for (int i=0; i<78; i++) {
int n = (int)(Math.random()*(78-i)+1)-1;
listeAleat[i] = ((Integer) liste.elementAt(n)).intValue();
liste.removeElementAt(n);
}
for (int i=0; i<78; i++) {
System.out.print(listeAleat[i]+" ");
}


DOBELIOU


-------------------------------
Réponse au message :
-------------------------------

> Salut,
>
> J'aimerais pouvoir générer un nombre aléatoire parmis une liste.
>
> Je prends un nombre aléatoire entre 1 et 78 avec (int)(Math.random() *78 + 1) ;
> Ensuite, j'aimerais que ce nombre disparaisse des possibilité. Par exemple si j'ai recu 54, le prochain nombre généré doit être entre 1 et 78 SAUF 54. Je doit générer absolument les 78 chiffres, seule l'ordre doit etre aléatoire.
>
> J'ai fait un petit test. Si le nombre est pris, je lui mets une variable à false s'il est libre true.
> Et je génère un nombre aléatoire dans un do{} while tant que la variable relative au nombre = false .
>
> Seul problème plus je génère de chiffres, plus les possibilités sont restreinte alors que la fonction continue avec des nombres de 1 à 78. Resultat j'arrive à la fin à une boucle quasi-infinie.
>
> Si qqun a une solution je suis preneur :-)
lundi 25 août 2003 à 09:05:17 | Re : Generation nombre aléatoire parmis liste

Sw1tch

Merci de m'avoir aidé, ca marche très bien.

La 2ème n'est pas vraiment plus lente [c'est imperceptible] si tu utilises des ArrayList [jdk 1.2, les vectors datent du jkd1.0 est sont déprécié... dixit Jbuilder :-p ]
lundi 25 août 2003 à 11:00:01 | Re : Generation nombre aléatoire parmis liste

LeGritcheOriginel

Il existe une méthode shuffle dans la classe Collections qui permet de mélanger les éléments d'une liste :

import java.util.*;

class r
{
public static void main(String[] args)
{
ArrayList list = new ArrayList(78);

for(int i=1;i<79;i++)
list.add(new Integer(i));

System.out.println(list);

Collections.shuffle(list);

System.out.println(list);
}
}
lundi 25 août 2003 à 13:10:53 | Re : Generation nombre aléatoire parmis liste

Sw1tch

Erf, impressionnant, 1 ligne suffit pour remplacer l'autre methode. Et ca marche en plus ;)

Merci je vais utiliser celle la :)
lundi 25 août 2003 à 13:27:35 | Re : Generation nombre aléatoire parmis liste

LeGritcheOriginel

Il existe en java plein de méthodes bien pratiques mais il faut les connaitre.


Cette discussion est classée dans : nombre, aléatoire, liste, generation, parmis


Répondre à ce message

Sujets en rapport avec ce message

Nombre aléatoire [ par deltiti ] J'ai besoin de réaliser une fonction choississant aléatoirement 3 nombres antre 0 et 1000. Quelqu'un peut-il m'aider?Merci d'avancedeltiti généré un nombre aléatoire [ par bsbo ] Salut,J'aimerais pouvoir générer un nombre aléatoire . J'aimerais prendre un nombre aléatoire entre  deux borne (ex:1 et 1000 ).Ensuite, j'aimerais qu compter le nombre de fois [ par ulysse00 ] salut mes amis je cherche a compter le nombre de fois des éléement de la liste B dans la liste A  j'ai une liste A={a,b,c,d}et une liste B={ac,ab} pou Algorithme de génération d'un nombre aléatoire [ par koukitasaid ] salut, Je cherche un algorithme qui permet de générer des nombres aléatoires en se basant sur un numéro chrono de 8 caractères, Pourriez-vous m'aide Générer un nombre aléatoire qui soit 1 ou -1... [ par Keliah ] Voilà toute la question est dans le sujet, quelqu'un sait-il comment faire pour générer un nombre aléatoire qui soit 1 ou -1.Merci d'avance :) Rafraichir une JList [ par manakeo ] Bonjour à tous, voila j'ai un petit souci avec ma JList.Je ne sais pas comment faire pour la rafraichir. Je m'explique:J'ai une liste de composants da Hashmap.... [ par Lebowskijul ] Salut. J'ai un projet à réaliser dans le cadre de mes études : je dois trier les différentes couleurs d'une image, les classer dans une table et rép Creer une Liste a partir d un Fichier RandomAccesFile???? [ par Delamour ] Slut a tous!j ai un gros problem , en fait j aimerais a partir d un Fichier RandomAccesFile ke j ai crée , creer une Liste. Je m explike: Dans mon Fic Choice ou JcomboBox [ par ilmb ] Bonsoir, Question simple, comment fait on pour récuperer un élément d'une liste dans un choice ou jcombobox dans un jdialog?Car j'ai essayé ou moins 1 comment dfinir un chronometer pour compter le nombre d' information recues par un Master dans un chain of responsabity. [ par petguet ] bonjourje voudrais savoir comment definir le nombre d informations echngees entre un client et un Het un handler par seconde avec java.Merci d' avance


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,232 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales