Random identique

Fermé
Hamster18 Messages postés 178 Date d'inscription mercredi 2 janvier 2019 Statut Membre Dernière intervention 22 janvier 2024 - 25 mars 2020 à 12:08
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 - 26 mars 2020 à 21:04
Bonjour,
J'essaye d'initialiser automatique un tableau de int dans un objet carte ainsi j'ai ceci :
new Carte( [mes autres attributs ], initialiserTab(new int[3]) )


et la méthode initialiser tab comme ceci :
        Random rand1 = new Random();
        Random rand2 = new Random();
        Random rand3 = new Random();

         nb1 = rand1.nextInt(25);
         nb2 = rand2.nextInt(25);
         nb3 = rand3.nextInt(25);

        for (int i = 0; i < 3; i++) {
            tab[i] = nb1;
            if (i == 1) {
                tab[i] = nb2;
            }
            if (i == 2) {
                tab[i] = nb3*-1;
            }
        }


Mais mes nb1, nb2, nb3 sont identique pour toute mes cartes est j'en voie pas la raison ...
Merci d'avance pour votre aide.
Cordialement.

5 réponses

yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 1 476
25 mars 2020 à 13:35
bonjour, je pense que rand1 suffit, et peut-être utilisé plusieurs fois.
0
Hamster18 Messages postés 178 Date d'inscription mercredi 2 janvier 2019 Statut Membre Dernière intervention 22 janvier 2024
25 mars 2020 à 14:01
J'avais essayer juste avec rand1 au début mais j'ai le même résultat à la fin ...
0
yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 1 476 > Hamster18 Messages postés 178 Date d'inscription mercredi 2 janvier 2019 Statut Membre Dernière intervention 22 janvier 2024
25 mars 2020 à 14:18
je ne peux pas deviner comment tu fais avec uniquement rand1.
0
Hamster18 Messages postés 178 Date d'inscription mercredi 2 janvier 2019 Statut Membre Dernière intervention 22 janvier 2024 > yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024
25 mars 2020 à 14:25
comme ceci :

        Random rand1 = new Random();


         nb1 = rand1.nextInt(25);
         nb2 = rand1.nextInt(25);
         nb3 = rand1.nextInt(25);

        for (int i = 0; i < 3; i++) {
            tab[i] = nb1;
            if (i == 1) {
                tab[i] = nb2;
            }
            if (i == 2) {
                tab[i] = nb3*-1;
            }
        }

0
yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 1 476 > Hamster18 Messages postés 178 Date d'inscription mercredi 2 janvier 2019 Statut Membre Dernière intervention 22 janvier 2024
25 mars 2020 à 14:36
il serait préférable de réutiliser rand1, sans faire new à chaque appel de la méthode.
0
Hamster18 Messages postés 178 Date d'inscription mercredi 2 janvier 2019 Statut Membre Dernière intervention 22 janvier 2024
25 mars 2020 à 14:52
D'accord, mais ça change pas mon problème, toute mes carte ont dans leur tableau les mêmes valeurs ...
0
yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 1 476
25 mars 2020 à 15:02
tu ne fais plus new à chaque appel de la méthode, et tu as toujours le problème? peux-tu montrer ton code?
0
Hamster18 Messages postés 178 Date d'inscription mercredi 2 janvier 2019 Statut Membre Dernière intervention 22 janvier 2024
25 mars 2020 à 15:15
Voici le code exacte :

    int nb1;
    int nb2;
    int nb3;
    private Random rand1 = new Random();

    private int[] initialiserTab( int tab[]) {
         nb1 = rand1.nextInt(5)+5;
         nb2 = rand1.nextInt(5)+5;
         nb3 = rand1.nextInt(5)+5;
        for (int i = 0; i < 3; i++) {
            tab[i] = nb1;
            if (i == 1) {
                tab[i] = nb2;
            }
            if (i == 2) {
                tab[i] = nb3*-1;
            }
        }
        return tab;
    }

    public ListeCarte() {
        listeCarte.add(new Carte(1,"Droit", R.drawable.droit_des_femmes, "Voulez-vous donner le droit de vote aux femmes ?", initialiserTab(new int[3]) ));
        listeCarte.add(new Carte(2,"Guerre", R.drawable.guerre, "Les hommes cherchent sans cesse à s'entretuer. Voulez-vous leur en donner les moyens ?", initialiserTab(new int[3]) ));
[...]
}


0
yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 1 476
25 mars 2020 à 15:43
je ne vois pas exactement dans quelle classe cela se trouve.
et ainsi?
private static Random rand1 = new Random();
0
Hamster18 Messages postés 178 Date d'inscription mercredi 2 janvier 2019 Statut Membre Dernière intervention 22 janvier 2024
25 mars 2020 à 16:02
Non toujours pas , et c'est dans une classe listeCarte
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
26 mars 2020 à 21:04
Bonjour,

Plusieurs "corrections" pour éviter du code inutile (genre la boucle qui ne sert à rien, les variables globales à proscrire, etc.)

private static final Random random = new Random();

private static int[] randomArray() {
    return new int[] {
         random.nextInt(5)+5,
         random.nextInt(5)+5,
         random.nextInt(5)+5
    }
}

public ListeCarte() {
    listeCarte.add(new Carte(1, "Droit", R.drawable.droit_des_femmes, "Voulez-vous donner le droit de vote aux femmes ?", randomArray()));
    listeCarte.add(new Carte(2, "Guerre", R.drawable.guerre, "Les hommes cherchent sans cesse à s'entretuer. Voulez-vous leur en donner les moyens ?", randomArray()));
}
0