Напишите метод для случайного генерирования набора из m целых чисел из массива размера n.Каждый элемент должен иметь равную вероятность быть выбранным.
Это довольно известный вопрос, который встречается в нескольких книгах и интервью, но либо я не правильно читаю вопрос, либо мне предъявляются требованияна самом деле этот вопрос не может быть выполнен в Java в одно и то же время.
Допустим, у нас есть массив размером n = 3
Integer [] ar = {1,1,5}
, если w выбрал m = 2 для нашего случайно сгенерированного набора, я не понимаю, как мы можем гарантировать равную вероятность для каждого элемента, который будет выбран.
Другими словами, запрос набора Java из 2 целых чисел из данного массива размера 3 делает невозможным обеспечение равной вероятности для каждого элемента.Для иллюстрации, если мы назовем [0] a, [1] b, [2] c, то все 2 комбинации элементов, выбранные случайным образом, с удалением, будут выглядеть так:
- ab
- ba
- ac
- bc
- ca
- cb
с вариантами выбора 1) и2) автоматически аннулирует требование уникальности элемента набора в Java, в этой конкретной ситуации элемент 'c', т. Е. Число 5 , всегда будет иметь вероятность 100%, если мы хотим получитьнабор из 2 элементов.
Полагаю, эту проблему еще проще проиллюстрировать, если массив содержит только дубликаты, т.е. {1,1,1}, и тогда набор из m = 2 целых чисел будет просто невозможен.
Есть ли что-то, что я неправильно понимаю или неправильно истолковал в отношении этого вопроса.