Cześć, sprawdzam zadania które muszę wykonać na zajęcia i zastanawia mnie metoda Math.random. Ta metoda losuje liczbę z przedziału <0, 1>, jak to ma się do mojego zadania, jeśli mam wylosować liczbę z przedziału <1.2, 4.4> ? Jest tu jakiś wzór z którego korzystam podczas obliczania mechanizmu zakładając, że 1.2 to a, natomiast 4.4 to b?
0
1
Należy liniowo przekształcić zakres <0,1>
na <1.2, 4.4>
, to przykład gdzie jakieś pojęcie o matematyce przydaje się w programowaniu.
Szukamy funkcji f(x) = ax + b
przekształcającej (0,1)
w (1.2, 4.4)
.
W takim razie rozwiązujemy układ równań:
1.2 = a*0 + b
4.4 = a*1 + b
Powodzenia.
0
4.4 - 1.2 = 3.2
Skoro Math.random()
daje 0-1
to Math.random()*3.2
daje 0-3.2
a więc Math.random()*3.2+1.2
daje nam 1.2-4.4
0
Udało mi się znaleźć w zeszycie coś takiego. Przedział liczby losowania to:
<1.2, 5.6>, wykładowca rozpisał to w taki sposób: <1.2, 5.6> --> 1.2 + <0, 4.4>, w rezultacie wyszło Math.random() * 4.4 + 1.2;
To znaczy, że A = 1.2 oraz B = 5.6 i dzięki temu: (B - A) + A ?
double r = Math.random() * 4.4 + 1.2;
System.out.println(r);
0
double upperbound = 1.2;
double lowerbound = 4.4;
double result = (double)(Math.random() * (upperbound - lowerbound) + lowerbound);
System.out.println(result);