IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Collection et Stream Java Discussion :

Remplit un tableau avec random()


Sujet :

Collection et Stream Java

  1. #1
    Membre très actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 338
    Par défaut Remplit un tableau avec random()
    Salut !
    Je voulais savoir comment faire pour remplier un tableau de 9 entiers en utilisant random().
    ps: chaque case doit contenir un nombre entre 0 et 8 ( tout les contenus des cases seront différents).

    Merci

  2. #2
    Membre chevronné Avatar de toutgrego
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2013
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2013
    Messages : 217
    Par défaut Elements de réponse
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    public int[]randomTab(int size, int minInclu, int maxExclu){
        int[] tab = new int[size];
     
        for(int i = 0; i<tab.length; i++){
            tab[i]=(int)(Math.random() * (maxExclu+1-minInclu)) + minInclu; 
        }
        return tab;
    }
    Pas testé, mais ça devrait être bon.

    =)

  3. #3
    Membre Expert

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 301
    Par défaut
    +1

    sinon, la classe Random (java.util) permet de réduire un peu le code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    java.util.Random r = new java.util.Random();
    r.nextInt(9);
    mais bon, si on lit bien ta question, tu cherches à remplir un tableau avec des nombres uniques?

    dans ce cas, je te conseille de simplement remplir une liste avec tout tes nombres, puis de la mélanger:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    List<Integer> l = new LinkedList<Integer>();
     
    for(int i=0; i<9; i++) {
        l.add(i);
    }
     
    Collections.shuffle(l);
    int[] theTableau = l.toArray(new int[l.size()]);
    PS: c'est pour un sudoku?


  4. #4
    Membre très actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 338
    Par défaut
    Citation Envoyé par Pill_S Voir le message
    +1

    sinon, la classe Random (java.util) permet de réduire un peu le code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    java.util.Random r = new java.util.Random();
    r.nextInt(9);
    mais bon, si on lit bien ta question, tu cherches à remplir un tableau avec des nombres uniques?

    dans ce cas, je te conseille de simplement remplir une liste avec tout tes nombres, puis de la mélanger:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    List<Integer> l = new LinkedList<Integer>();
     
    for(int i=0; i<9; i++) {
        l.add(i);
    }
     
    Collections.shuffle(l);
    int[] theTableau = l.toArray(new int[l.size()]);
    PS: c'est pour un sudoku?

    C'est pour un jeu de Taquin 3x3

  5. #5
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Salut,

    Pour un taquin, tu ne peux pas procéder par tirage aléatoire, ou mélange aléatoire, sinon tu vas te retrouver avec une configuration insoluble, avec une forte probabilité. Il te faut simuler un nombre (possiblement aléatoire) de mouvements aléatoires. Un mouvement étant un échange entre une case vide (je suppose que c'est le 0 dans ton cas) et une case adjacente, au dessus, en dessous, à droite ou à gauche.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    public class MelangeTaquinDemo {
     
    	/**
             * marche pour des grilles de taille supérieur à 1 x 1
             * 
             * @param nbcol nombre de colonnes
             * @param nblig nombre de lignes
             * @param nbmouv nombre de mouvement à simuler
             * @return grille taquin mélangée
             */
    	public static int[] creerTaquin(int nbcol, int nblig, int nbmouv) {
     
    		//initialisation
    		int nbitems=nbcol*nblig;
    		int[] array=new int[nbitems];
    		for(int i=0; i<array.length; i++) {
    			array[i]=i;
    		} 
     
    		// simulation
    		int index=0; // position initiale du 0
    		while( nbmouv>0 ) {
     
    			// position x,y 
    			int x = index % nbcol;
    			int y = index / nblig;
     
    			// mouvement
    			double deplacement = Math.random();
    			int dx=0;int dy=0;
    			if( deplacement<0.25 ) {
    				dx=-1; // à gauche
    			} else if ( deplacement<0.5 ) {
    				dx=1; // à droite
    			}
    			else if( deplacement<0.75 ) {
    				dy=-1; // en dessous
    			} else {
    				dy=1; // au dessus
    			}
    			// on empêche les mouvements qui sortent de la grille
    			if ( x+dx<0 || x+dx>=nbcol) dx=-dx;
    			if ( y+dy<0 || y+dy>=nblig) dy=-dy;
     
    			// nouvelle case
    			int nx=x+dx;
    			int ny=y+dy;
     
    			// nouvelle position dans le tableau
    			int nindex = ny*nblig+nx;
     
    			// mouvement = echange
    			int swap = array[nindex];
    			array[nindex]=array[index]; 
    			array[index]=swap;
     
    			// suivant
    			index=nindex;
    			nbmouv--;
     
    		}
     
    		return array;
     
    	}
     
    	public static void main(String[] args) {
     
    		int nbcol=3;
    		int nblig=nbcol;
    		int nbmouv=50; // nombre de mouvements simulés, correspond à la difficulté
    		int[] taquin = creerTaquin(nbcol, nblig, nbmouv);
    		for(int i=0; i<nblig; i++) {
    			for(int j=0; j<nbcol; j++) {
    				System.out.print('[');
    				System.out.print(taquin[i*nblig+j]);
    				System.out.print(']');
    			}
    			System.out.println();
    		}
     
    	}
     
    }
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

Discussions similaires

  1. alterner les couleurs dans un tableau avec xsl
    Par Eithelgul dans le forum XSL/XSLT/XPATH
    Réponses: 14
    Dernier message: 03/05/2015, 23h29
  2. Comment remplir un tableau avec random sans doublon ?
    Par muntu dans le forum Collection et Stream
    Réponses: 15
    Dernier message: 16/07/2010, 09h42
  3. [Debutant]Afficher element du tableau string avec Random
    Par FITRI dans le forum Windows Forms
    Réponses: 4
    Dernier message: 30/01/2008, 11h11
  4. generation d'un tableau avec Random
    Par berberat dans le forum Collection et Stream
    Réponses: 6
    Dernier message: 17/12/2007, 15h56
  5. Script assez difficile avec random
    Par LFC dans le forum Requêtes
    Réponses: 6
    Dernier message: 01/08/2003, 18h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo