随机抽取数据

来源:互联网 发布:jquery.min.js没有找到 编辑:程序博客网 时间:2024/05/16 12:49

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

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

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

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

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