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
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
Pas testé, mais ça devrait être bon.
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; }
=)
+1
sinon, la classe Random (java.util) permet de réduire un peu le code:
mais bon, si on lit bien ta question, tu cherches à remplir un tableau avec des nombres uniques?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 java.util.Random r = new java.util.Random(); r.nextInt(9);
dans ce cas, je te conseille de simplement remplir une liste avec tout tes nombres, puis de la mélanger:
PS: c'est pour un sudoku?
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()]);
![]()
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.
Partager