Tengo una corriente de eventos que fluye a través de mis servidores. No es posible para mí almacenarlos todos, pero me gustaría poder procesar algunos de ellos periódicamente. Por lo tanto, quiero mantener un subconjunto de la transmisión que sea una muestra aleatoria de todo lo que he visto, pero está limitado a un tamaño máximo.¿Cómo mantener un subconjunto aleatorio de una secuencia de datos?
Por lo tanto, para cada nuevo elemento, necesito un algoritmo para decidir si debo agregarlo al conjunto almacenado, o si debería descartarlo. Si lo agrego, y ya estoy en mi límite, necesito un algoritmo para desalojar uno de los elementos antiguos.
Obviamente, esto es fácil siempre y cuando esté por debajo de mi límite (simplemente guarde todo). Pero, ¿cómo puedo mantener un buen muestreo al azar sin estar predispuesto hacia los artículos viejos o nuevos artículos una vez que he superado ese límite?
Gracias,
¿Tiene un mínimo subconjunto? – Enrique
Enrique, no estoy seguro de lo que quiere decir. Si solo obtuve 1 evento, esperaría guardarlo. – twk
http://en.wikipedia.org/wiki/Reservoir_sampling –