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?
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?
Nie ma takiej możliwości, lewy koniec przedziału jest większy niż prawy. W podanym przedziale nie ma zatem żadnej liczby.
tzn przedział moze wygladac odwodnie <-(20%*int+int) : +(20%*int+int)> to nie ma znaczenia w moim przypadku
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
dzieki :)
tylko niestetymusze uzyc tej klasy bo mam tak w liscie z zadaniami na laborki ;/
Random r =new Random();
int a= ... //jakaś liczba
//potrzebne liczby, to
a*(0.8+0.4*r.nextDouble())
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 ... :)
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.4r.nextDouble()) jest z przedziału [0.8;1.2)
20*(0.8+0.4*r.nextDouble()) jest z przedziału [16;24)
Tylko dlaczego wpisujesz tutaj akurat 0.8 i 0.4 i 20?
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.
ok dziekuje wam wszystkim bardzo za pomoc :)
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();
}
}