Этот вопрос о получении случайных значений из конечного набора заставил меня думать...
Общеизвестно, что люди хотят получить X уникальных значений из набора значений Y. Например, я могу взять руку из колоды карт. Я хочу 5 карт, и я хочу, чтобы они были уникальными.
Теперь я могу сделать это наивно, выбрав случайную карту 5 раз и повторю попытку каждый раз, когда получаю дубликат, пока не получу 5 карт. Однако это не так уж велико для большого числа значений больших множеств. Например, если мне нужно 999,999 значений из набора в 1 000 000, этот метод становится очень плохим.
Вопрос: как плохо? Я ищу кого-то, чтобы объяснить значение O(). Получение x-го числа приведет к попыткам... но сколько? Я знаю, как это понять для любого заданного значения, но есть ли простой способ обобщить это для всей серии и получить значение O()?
(Вопрос не в том, "как я могу улучшить это?", потому что его относительно легко исправить, и я уверен, что он был рассмотрен много раз в другом месте.)