从无限流和加权无限流中等概率取数据
作者:互联网
从无限流中等概率取100个数据。
一、方法一:分配随机数
开辟一个存储100个数据的内存空间,当无限流中的一个数据a到来就为它分配一个随机数,若内存空间未满就存入,若空间已满但是数据a的随机数大于空间中随机数最小的数据,就把随机数最低的一个删除。依次类推,这样就保证到最后一个数据n为止,所有的数据被选中的概率都是100/n。
二、方法二:蓄水池法
开辟一个存储100个数据的内存空间,当无限流中第n个数据a到来时,若内存空间未满就存入,若空间已满就给a一个0-1随机数k,若k < 100/n 就随机从100个数据中删除一个并将a存入。这个可以使用数学归纳法来证明,假设在n - 1个数据到来时,池中的数据保留的概率为100/(n-1),那么当第n个数据到来时,池中数据保留的概率为100/(n-1) * (1-1/n) = 100/n,当n = 102时成立,证毕。
三、方法三:加权取样
ui是0-1的随机数,wi是权重。
四、方法四:分布式处理
记录每台机器处理的数据量,那么该台机器的每个数据的权重ki乘以数据量就是它的新权重,之后对每台机器进行加权取样。
标签:加权,概率,中等,内存空间,无限,随机数,100,数据 来源: https://blog.csdn.net/weixin_45841729/article/details/121458674