Набор из m целых чисел из массива размера n - PullRequest
0 голосов
/ 14 февраля 2019

Напишите метод для случайного генерирования набора из m целых чисел из массива размера n.Каждый элемент должен иметь равную вероятность быть выбранным.

Это довольно известный вопрос, который встречается в нескольких книгах и интервью, но либо я не правильно читаю вопрос, либо мне предъявляются требованияна самом деле этот вопрос не может быть выполнен в Java в одно и то же время.

Допустим, у нас есть массив размером n = 3

Integer [] ar = {1,1,5}

, если w выбрал m = 2 для нашего случайно сгенерированного набора, я не понимаю, как мы можем гарантировать равную вероятность для каждого элемента, который будет выбран.

Другими словами, запрос набора Java из 2 целых чисел из данного массива размера 3 делает невозможным обеспечение равной вероятности для каждого элемента.Для иллюстрации, если мы назовем [0] a, [1] b, [2] c, то все 2 комбинации элементов, выбранные случайным образом, с удалением, будут выглядеть так:

  1. ab
  2. ba
  3. ac
  4. bc
  5. ca
  6. cb

с вариантами выбора 1) и2) автоматически аннулирует требование уникальности элемента набора в Java, в этой конкретной ситуации элемент 'c', т. Е. Число 5 , всегда будет иметь вероятность 100%, если мы хотим получитьнабор из 2 элементов.

Полагаю, эту проблему еще проще проиллюстрировать, если массив содержит только дубликаты, т.е. {1,1,1}, и тогда набор из m = 2 целых чисел будет просто невозможен.

Есть ли что-то, что я неправильно понимаю или неправильно истолковал в отношении этого вопроса.

...