+ -
当前位置:首页 → 问答吧 → 今天百度的一道笔试题

今天百度的一道笔试题

时间:2011-10-16

来源:互联网

由于存储空间有限,每天只能存储m个请求,每天的请求数量远大于m,请求数量不到最后时刻不会知道。
求一算法实现随机存储m个请求,每个请求被存储的概率都一样

作者: peeky01   发布时间: 2011-10-16

先存储m个,
当第N(N>m)个请求来时,m/N概率存储该请求,随机替换m个存储好的请求中的一个.

作者: oo   发布时间: 2011-10-16

感觉不行哇,反例:前N-1个总有被替换的概率,而最后一个木有被替换的概率
引用 1 楼 oo 的回复:
先存储m个,
当第N(N>m)个请求来时,m/N概率存储该请求,随机替换m个存储好的请求中的一个.

作者: peeky01   发布时间: 2011-10-16

引用 2 楼 peeky01 的回复:
感觉不行哇,反例:前N-1个总有被替换的概率,而最后一个木有被替换的概率

引用 1 楼 oo 的回复:
先存储m个,
当第N(N>m)个请求来时,m/N概率存储该请求,随机替换m个存储好的请求中的一个.

1楼的没有问题啊,因为每一个数被选中的概率都是m/N

作者: sbwwkmyd   发布时间: 2011-10-16

我今天也参加了百度的笔试题目,我的思路是这样的。。

如果用户查询的数量小于m,那么直接就存起来。如果用户查询的数量大于m,假设为m+i,那么在1-----m+i之间随机产生一个数,如果选择的是前面m条查询进行存取,那么概率为m/(m+i),如果选择的是后面i条记录中的查询,那么用这个记录来替换前面m条查询记录的概率为m/(m+i)*(1-1/m)=(m-1)/(m+i),当查询记录量很大的时候,m/(m+i)== (m-1)/(m+i),所以每个query被抽中的概率是相等的。

作者: Hackbuteer1   发布时间: 2011-10-16

mark

作者: lz3771   发布时间: 2011-10-16

热门下载

更多