Random + java + chaque fois un nouveau valeur

ascv -  
ramsis1985 Messages postés 5 Statut Membre -
Bonjour,
je veux utiliser la fonction random pour générer des nombres,compris entre 1 et 8, avec chaque fois l'apparition d'un nouveau valeur,c'est à dire après 8 itération j'ai toutes les valeurs sont distinct.

quelqu'un 'un peut m'aider S.V.P
Configuration: Windows XP
Firefox 3.0.3

2 réponses

  1. Marco la baraque Messages postés 1030 Statut Contributeur 329
     
    Bonjour !
    import java.util.HashMap;
    import java.util.Iterator;
    import java.util.LinkedList;
    import java.util.List;
    import java.util.Map;
    
    
    public class Random8 {
    
           private static final int MAX_VALUE = 8;
    
    	public static void main(String[] args) {
    		Map<Integer, Integer> map = new HashMap<Integer, Integer>();
    		List<Integer> list = new LinkedList<Integer>();
    		int insertedValues = 0;
    		while (insertedValues < MAX_VALUE) {
    			Integer random = new Integer((int) Math.ceil(Math.random() * 8));
    			if(!map.containsKey(random)) {
    				map.put(random, null);
    				list.add(random);
    				insertedValues++;
    			}
    		}
    		
    		Iterator<Integer> it = list.iterator();
    		while (it.hasNext()) {
                            //traitement souhaité (ici affichage)
    			System.out.println(it.next());
    		}
    	}
    
    }
    


    Explications :
    J'utilise ici 2 structures de données : une map et une linkedList. Dans ces deux structures de données, je vais insérer les valeurs tirées aléatoirement.
    La map me permet de tester en temps constant si une valeur a déjà été tirée, mais son inconvénient est que, une fois que tu auras généré tous les nombre, ceux-ci auront été inséré dans n'importe quel ordre (pas forcément dans l'ordre dans lequel tu les as inséré).
    La linkedList permet de conserver ton ordre d'insertion.

    Pour récapituler, la map sert à tester rapidement si on a déjà tiré le nombre qu'on vient de tirer.
    La linkedList à stocker les chiffres générés.

    N'hésite pas si tu as des questions.

    Cordialement,
    0
  2. ramsis1985 Messages postés 5 Statut Membre
     
    bien
    0