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