Как сохранить случайное подмножество потока данных?

У меня есть поток событий, проходящих через мои серверы. Мне не представляется возможным хранить их все, но хотелось бы периодически иметь возможность обрабатывать некоторые из них в совокупности. Итак, я хочу сохранить подмножество потока, которое представляет собой случайную выборку всего, что я видел, но ограничено максимальным размером.

Итак, для каждого нового элемента мне нужен алгоритм, чтобы решить, следует ли мне добавить его к сохраненному набору или отбросить. Если я добавлю его, а у меня уже есть предел, мне понадобится алгоритм для удаления одного из старых элементов.

Очевидно, это легко, пока я ниже своего лимита (просто сохраните все). Но как я могу поддерживать хорошую случайную выборку без предвзятого отношения к старым или новым предметам, когда я превышаю этот предел?

Спасибо,

15
задан twk 4 December 2010 в 21:44
поделиться