Как бы вы выбрали единый случайный элемент в связанном списке с неизвестной длиной? Как бы вы выбрали единый случайный элемент в связанном списке с неизвестной длиной за один проход или если не два прохода? Ответ 1 Использовать выборку коллектора http://en.wikipedia.org/wiki/Reservoir_sampling. Вам нужен только один проход данных. Для выбора одного элемента: Выберите первый элемент (вероятность 1) Позже, для k-го элемента выберите его с вероятностью 1/k (т.е. замените существующий выбор на k-ый элемент) Я позволю вам доказать, что это приводит к равномерному выбору элементов.
Ответ 1 Использовать выборку коллектора http://en.wikipedia.org/wiki/Reservoir_sampling. Вам нужен только один проход данных. Для выбора одного элемента: Выберите первый элемент (вероятность 1) Позже, для k-го элемента выберите его с вероятностью 1/k (т.е. замените существующий выбор на k-ый элемент) Я позволю вам доказать, что это приводит к равномерному выбору элементов.