如何在无穷的数据流随机选择m个数

来源:互联网 发布:mac系统重装要多久 编辑:程序博客网 时间:2024/05/13 11:35

       当小于等于m个数的时候,每个词被选中的概率是100%


       假定当有n个数n>m时,每个数被选中的概率的相等的,即m/n。

       那么当有n+1个数时,对于第n+1数,以m/(n+1)的概率选择是否选中这个数。

       如果选中了第n+1个数,这个数选中的概率就是m/(n+1)。这个数保存在n个位置中的一个,因此又是1/m的概率


       前n个数中一个数保存概率是:(m/n) * (n+1-m)/(n+1) + (m/n)*(m/(n+1))*((m-1)/m) = m/(n+1)。

(前n个数一个数选中的概率)*(第n+1的数没有选中的概率)+

(前n个数一个数选中的概率)*(第n+1的数选中的概率)*(不被第n+1的数给替换的概率)。


              m/n代表前n个数选m个数的概率。

              (n+1-m)/(n+1)代表第n+1个数没有选中的概率。

              m/(n+1)代表第n+1个数选中的概率。

              (m-1)/m代表m个数中,要新增保存一个数,已保存的情况下,还保存的概率。

0 0