摘要:        
给定一个未知长度的整数流,如何从中随机选取个m随机数。解决方法:定义长度为m的数组,对于数据流中的前1000个关键字,显然都要放到数组中。对于数据流中的的第n(n>m)个关键字,则这个关键字被随机选中的概率为 m/n。故以 m/n 的概率用这个关键字去替换数组中的一个。这样就可以保证所有关键字都以 m/n的概率被选中。对于后面的关键字都进行这样的处理,这样就可以保证数组中总是保存着m个随机关键字。可以用归纳法证明关键字都以 m/n的概率被选中。void swap(int* p, int* q){ int tmp = *p; *p = *q; *q = tmp;}void sh...    阅读全文
posted @ 2011-10-07 22:10
westfly
阅读(383)
评论(0)
推荐(0)
        
 
                    
                     
                    
                 
                    
                
 
         浙公网安备 33010602011771号
浙公网安备 33010602011771号