Losowanie zwraca zawsze dwie te same liczby

0

Cześć mam pewien problem otóż chciałbym wykonać losowanie dla każdej ze statystyk które zostanie dodane do podstawowej wartości statystyki, lecz wynik losowania ostatecznie jest identyczny przy wyświetleniu np. 20 i 20 po losowaniu daje 28 i 28 a nie na przykład 26 i 32. Co powinienem zmienić by losowanie przebiegało dla każdej statystyki z osobna?

public static void main(String[] args) {
        HeroStatistics[] races = new HeroStatistics[4];
        //human
        races[0] = new HeroStatistics(2,20,20,1,1,4,
                20,1,20,20,20,20,20);
        //elf
        races[1] = new HeroStatistics(2,30,20,1,1,3,
                50,1,30,40,40,30,30);
        //dwarf
        races[2] = new HeroStatistics(2,30,10,1,2,5,
                10,1,10,20,40,40,10);
        //halfling
        races[3] = new HeroStatistics(2,10,20,0,0,3,
                40,1,30,20,10,30,30);

        Random rand = new Random();
        int mod1 = rand.nextInt(9);
        mod1 += 1;
        int mod2 = rand.nextInt(2);
        mod2 += 1;

            System.out.println(mod1 + races[0].getBallisticSkill()); // to wynosi 20
            System.out.println(mod1 + races[0].getWeaponSkill()); // to również wynosi 20
        }
    }
0

Gdzie wykorzystujesz zmienną mod2?

1

Jeszcze nigdzie, to będzie wykorzystywane w taki sam sposób jak mod1 tylko do statystyk jednocyfrowych.

0

No to inaczej: skoro dokonujesz tylko jednego losowania, w obydwu obliczeniach mod1 ma tę samą wartość (np. 3 lub 8).

Jeśli chcesz uzyskać dwie prawdopodobnie różne liczby, powinieneś dokonać dwóch losowań:

System.out.println(rand.nextInt(9) + races[0].getBallisticSkill());
System.out.println(rand.nextInt(9) + races[0].getWeaponSkill());

1 użytkowników online, w tym zalogowanych: 0, gości: 1