Hello tous,
j'ai un petit problème avec mes chiffres sortis avec la classe Random.
En effet, je génère des noms à partir d'une base de donnée de noms et de prénoms, je tire donc un nom et un prénom que j'assemble.
Le problème c'est que la base fait 300 prénoms * 300 noms, donc preque 100k possibilités et que j'ai déja DES couples identiques. Comme vous allez le voir dans mon code ma méthode est statique, est-ce une possible cause du problème ?
C'est la première fois que je l'etilise (Random), donc pê je fais pas les choses bien ?
Voici le code :
Code :
- /**
- *Renvoie un nom généré aléatoirement parmis la base de noms et de prénoms.
- */
- public static String getAName() {
- Connection con = null;
- Statement st = null;
- ResultSet rs = null;
- String[] catcount = null;
- Random rnd = new Random();
-
- try {
- con = Pool.getInstance().getConnection();
- //connexions et récupération du nombre d'enregistrement des tables
- //noms = nombre de noms dans la base
- //prenoms = nombre de prénoms dans la base
-
- noms = rnd.nextInt(noms - 1) + 1;
- prenoms = rnd.nextInt(prenoms - 1) + 1;
-
- if(debug)
- System.out.println(noms);
- if(debug)
- System.out.println(prenoms);
-
- nbNoms = "SELECT * FROM NOM ORDER BY NOM";
- nbPrenoms = "SELECT * FROM PRENOM ORDER BY PRENOM";
-
- //obligé de boucler dans les resultset jusqu'au chiffre tiré aléatoirement, drivers supportent pas les resultset scrollables (absolute()...)
- rs = st.executeQuery(nbPrenoms);
- while(i <= prenoms && rs.next()){
- if(i == prenoms)
- nom = rs.getString(1).trim();
- i++;
- }
-
- if(debug)
- System.out.println(nom);
-
- i = 0;
- rs = st.executeQuery(nbNoms);
- while(i <= prenoms && rs.next()){
- if(i == prenoms)
- nom += " " + rs.getString(1).trim();
- i++;
- }
-
- return nom;
-
- } catch (SQLException sqle) {
- //....
- return null;
- } finally {
- //....fermetures des connexions...
- } catch(SQLException s) {}
- }
- }
|
une idée ?
Là je suis sur le point de tirer 100 int aléatoires, les foutre dans un tableau, et tirer aléatoirement l'index mais bon c suppra lourd pour un traîtement qui se répète en boucle assez souvent...
edit : oui je sais dans cette méthode mes noms de variable sont pas très heureux
Message édité par glod 2 le 11-01-2005 à 20:53:07