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