Check out reservoir sampling in wiki.

On Sun, Jun 27, 2010 at 11:13, Anil C R <cr.a...@gmail.com> wrote:

> it is... but a small mistake in the code again...
> def get_random_obj( objstream ):
>     count = 1
>     obj = objstream.get()
>     while not objstream.end():
> *        count += 1*
>         r = rand(0, count)
>         if r == 0:
>             obj = objstream.get()
>         else:
>             objstream.get() #discard
>     return obj
>
> note that you cannot make sense of equal probability if there are infinite
> number of objects. Hence assume that there are N objects streaming.
>
> *Loop invariant*: probability of choosing any of the previously streamed
> objects at the end of iteration n is
> P[k, n] = probability that kth object is chosen at iteration n
> *Base*: at the end of first iteration, P[1,1] = P[random(0,2)=0] = 1/2
> *Induction*:
> Assume the invariant to be true at all iterations < n
>
> P[n, n] = P[random(0, n) = 0] = 1/n
> P[k, n] = P[k, n-1]*(1-P[n,n]) = (1/(n-1))*(1 - (1/n)) = 1/n
>
> therefore at the end of N iterations, the probability of choosing any
> object is 1/N
>
> Anil
>
>
>
> On Sun, Jun 27, 2010 at 9:19 AM, sharad kumar <sharad20073...@gmail.com>wrote:
>
>> @above
>> probabilty for all numbers in d stream must be *same*.....whether first
>> or last....
>>
>> --
>> You received this message because you are subscribed to the Google Groups
>> "Algorithm Geeks" group.
>> To post to this group, send email to algoge...@googlegroups.com.
>> To unsubscribe from this group, send email to
>> algogeeks+unsubscr...@googlegroups.com<algogeeks%2bunsubscr...@googlegroups.com>
>> .
>> For more options, visit this group at
>> http://groups.google.com/group/algogeeks?hl=en.
>>
>
>  --
> You received this message because you are subscribed to the Google Groups
> "Algorithm Geeks" group.
> To post to this group, send email to algoge...@googlegroups.com.
> To unsubscribe from this group, send email to
> algogeeks+unsubscr...@googlegroups.com<algogeeks%2bunsubscr...@googlegroups.com>
> .
> For more options, visit this group at
> http://groups.google.com/group/algogeeks?hl=en.
>

-- 
You received this message because you are subscribed to the Google Groups 
"Algorithm Geeks" group.
To post to this group, send email to algoge...@googlegroups.com.
To unsubscribe from this group, send email to 
algogeeks+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/algogeeks?hl=en.

Reply via email to