Cześć,
Napisałem generator liczb losowych z pomocą książki do Javy i mam problem ze zrozumieniem części kodu:
public class Generator
{
public static void main(String[] args)
{
Scanner skaner1 = new Scanner(System.in);
System.out.println("Ile liczb będziesz losować?");
int a = skaner1.nextInt();
System.out.println("Jaka jest największa liczba?");
int b = skaner1.nextInt();
int[] talbica1 = new int[b];
for(int i = 0; i < talbica1.length; i++)
{
talbica1[i] = i + 1;
}
int[] result = new int[a];
for(int i = 0; i < result.length; i++)
{
int r = (int) (Math.random() * b);
result[i] = talbica1[r];
talbica1[r] = talbica1[b - 1];
b--;
}
Arrays.sort(result);
for(int x : result)
{
System.out.println(x);
}
System.out.println(Arrays.toString(result));
Chodzi mi o to, że jak losuję liczbę
int r
i wyniesie ona np. max B czyli np. 5, to w linijce
result[i] = talbica1[r];
przypisuję wartość z 5 miejsca tablicy "tablica1" do miejsca w tablicy "result[i]".
Ale "tablica1" ma długość 5 czyli 0, 1, 2, 3 i 4 więc jak ma przypisać wartość z piątego miejsca którego nie ma?
Może popełniam gdzieś błąd w rozumieniu funkcji random?