Math.random i losowanie liczb

0

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

0

2 x tak

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