Witam
Znalazłem taki kod odpowiedzialny za losowanie niepowtarzających się liczb (program działa bez żadnych błędów):
public static void main(String[] args)
{
Scanner in = new Scanner(System.in);
System.out.print("Ile liczb ma być losowanych? ");
int k = in.nextInt();
System.out.print("Ilość wszystkich liczb: ");
int n = in.nextInt();
int[] numbers = new int[n];
for (int i = 0; i < numbers.length; i++)
numbers[i] = i + 1;
int[] result = new int[k];
for (int i = 0; i < result.length; i++)
{
int r = (int) (Math.random() * n);
result[i] = numbers[r];
numbers[r] = numbers[n - 1];
n--;
}
Mam pytanie odnośnie tej części:
for (int i = 0; i < result.length; i++)
{
int r = (int) (Math.random() * n);
result[i] = numbers[r];
numbers[r] = numbers[n - 1];
n--;
}
Czy Math.random() może powtarzać wartości, np. dwa razy wylosować 0,3 ?
Czy rzutowanie na typ int zawsze powoduje "odcięcie" części ułamkowej, np. 1,9 -> 1 i 1,1 ->1 ?
Za pomoc dziękuję.
Pozdrawiam