随机抽取数据

从url列表文件中随机抽取一万个url,怎么做 ?当然要求就是要随机,即每个url被取中的概率相同。

开始我只能想到从指定记录数的列表中取,那样直接按概率取随机数确定就可以,这时也不用保存取出的url,可以直接输出。

假定有n条记录,要取m条,取第一条的概率是m/n,后面都是条件概率,前面已经取中k条的情况下该条取中的概率多少。

在记录未知的情况下,可能的做法是不停地校正概率。直觉上单个取中的概率越来越少,所以只需要考虑前面抽中的是否需要剔除,而不考虑漏掉的是否再补上。

开始一条一条的读,因为总是假定总记录数为当前的记录数,所以前1万条都取了。取第10001条时不考虑前面取的情况,按照1/10001的概率取,如果没抽到前面取到的还都保留,如果抽都则前面的10000个中必须按照1/10000的概率踢掉一个,就这样一直延续下去,就能得到分布平均的随机抽取了。数学上应该可以证明的,有时间我要写程序测试下。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值