uzycie klasy java.util.Random

0

Mam problem z napisaniem kawałka kodu.

Mianowicie mam metode ktora zwraca mi jakiegos inta i musze za pomoca klasy Random wypisywac liczby z zakresu <+20%*int+int : -20%*int+int>

Czy ktos mogl by mi pomoc zapisac to poprawnie?

0

Nie ma takiej możliwości, lewy koniec przedziału jest większy niż prawy. W podanym przedziale nie ma zatem żadnej liczby.

0

tzn przedział moze wygladac odwodnie <-(20%*int+int) : +(20%*int+int)> to nie ma znaczenia w moim przypadku

0
        int a = 10;
        double plusA = a * 20 / 100;
        double up = a - plusA;
        double down = a + plusA; 
        for (int i = 0; i < 20; i++) {
            System.out.println(Math.random()*(down - up)+up);
        }
 

jak chcesz tylko inty to wystarczy tylko rzutować na ten typ :)

Pozdro

0

dzieki :)

tylko niestetymusze uzyc tej klasy bo mam tak w liscie z zadaniami na laborki ;/

0
Random r =new Random();
int a= ... //jakaś liczba
//potrzebne liczby, to
a*(0.8+0.4*r.nextDouble())
0

hmm nie do konca rozumiem ten zapis ;/ mozesz mi podac to na przykladzie np moj int jest rowny 20 i mam losowac liczby rozniace sie od mojego inta o 20% (mniejsze lub wieksze lub takie same) jak to zapisac?

Random r = new Random();

x = 20;

i co dalej z tymi procentami i zakresem i w ogole ... :)

0
20*(0.8+0.4*r.nextDouble())

r.nextDouble() "losuje" liczbę z przedziału [0;1),
0.4r.nextDouble() jest zatem z przedziału [0;0.4),
(0.8+0.4
r.nextDouble()) jest z przedziału [0.8;1.2)
20*(0.8+0.4*r.nextDouble()) jest z przedziału [16;24)

0

Tylko dlaczego wpisujesz tutaj akurat 0.8 i 0.4 i 20?

0

0.8 i 0.4 to stałe (1 - 0.2 = 0.8, 2 * 0.2 = 0.4; dla +-30% byłyby to 0.7 i 0.6 itd.), 20 to x.

0

ok dziekuje wam wszystkim bardzo za pomoc :)

0

Jeżeli chciałbyś operować tylko na intach, bez doubli czy floatów to możesz to zrobić tak:

import java.util.Random;

public class Main {
    
    Random generator = new Random();

    int rozrzut(int wartosc, int procent) {
        int rozrzut = wartosc * procent / 100;
        return generator.nextInt(rozrzut * 2 + 1) - rozrzut + wartosc;
    }

    void run() {
        System.out.println(rozrzut(20, 10));
    }

    public static void main(String[] args) {
        new Main().run();
    }
}

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