Vector

gigi00 Messages postés 23 Date d'inscription mardi 8 janvier 2008 Statut Membre Dernière intervention 26 juin 2010 - 11 févr. 2008 à 19:22
Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 - 11 févr. 2008 à 21:14
bonjour

je veux que ce programme rempli aleatoirement  un tableau de 9 saans repition mais j ai un probleme  au niveau des colonnes
import java.util.Vector.*;
 import java.util.*;
public class gfdcbg { 
      public static void main(String[] args) {
      int i, j;
     int [][]tab;
     Vector v=new Vector();
   
tab=new int[9][9];
    for(i=0;i<=8;i++)
    {   for(j=0;j<=8;j++)
       {
        tab[i][j]=(int)(Math.random()*(9)+1);
    while(v.contains(Integer.toString(tab[i][j])))
 
   tab[i][j]=(int)(Math.random()*(9)+1);
   v.add(Integer.toString(tab[i][j]));
    System.out.print(" \t"+tab[i][j]);
     } 
   v.clear();
  
    System.out.print("\n");
}


 for(j=0;j<=8;j++)
    {   for(i=0;i<=8;i++)
       {
        tab[i][j]=(int)(Math.random()*(9)+1);
    while(v.contains(Integer.toString(tab[i][j])))
 
   tab[i][j]=(int)(Math.random()*(9)+1);
   v.add(Integer.toString(tab[i][j]));
    System.out.print(" \t"+tab[i][j]);
     } 
   v.clear();
  
   System.out.print("\n");
}
 
    }   }
 merci

1 réponse

Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 38
11 févr. 2008 à 21:14
Salut:

La façon avec laquelle tu généres la séquence des nombre aléatoires n'est pas déterministe.

Tu peux en revanche t'inspirer d'un petit théorème en mathématiques celui des Convexes.

Et du fait que tout intervalle est un convexe.

Soit l'intervalle [a, b] telque a < b, pour toute x appartenant à [a, b], il existe c appartenant à [0, 1] telque x peut s'écrire sous la forme x = c*a + (1-c)*b

Ceci donne en terme de programme:

int[][] matrix = new int[3][3];
for (int i = 0; i < 3; ++i) {
    for(int j = 0; j < 3; ++j) {
       matrix[i][j] = 3*i + j;
    }
}

Random random = new Random();
random.setSeed(System.currentTimeMillis());
for (int i = 0; i < 3; ++i) {
    for(int j = 0; j < 3; ++j) {
       int k = (int)(i*3 + j + random.nextDouble()*(9 - 3*i -j));
       int tmp = matrix[i][j];
       matrix[i][j] = matrix[k/3][k%3];
       matrix[k/3][k%3] = tmp;
    }
}

for (int i = 0; i < 3; ++i) {
    for(int j = 0; j < 3; ++j) {
        System.out.print(matrix[i][j] + "\t");
    }
    System.out.println();
}

Cordialement ...
0
Rejoignez-nous