一、问题由来 这个题目的由来是在《编程珠玑》里遇到的,故记录一下。还可以这么说,”如何从二进制文件中等概率取整数?”或者”在不知道文件总行数的情况下,如何从文件中随机的抽取一行?”这个题目说的有点不清楚实际上是:一个二进制文件中有好多好多整数,你要随机取出一个。 这个问题的难点就在于你开始不知道有多...
分类:
编程语言 时间:
2014-12-26 14:31:59
阅读次数:
182
随机读取数据,如何保证真随机是不可能的,因为计算机的随机函数是伪随机的。但是在不考虑计算机随机函数的情况下,如何保证数据的随机采样呢?1.系统提供的shuffle函数 C++/Java都提供有shuffle函数,可以对容器内部的数据打乱,保持随机排序。 C++:1 template 2 vo...
分类:
编程语言 时间:
2014-10-28 19:54:20
阅读次数:
200
问题:如何在无限大的数据流中随机选取K个数据,保证当前遍历过的i个元素中每一个元素被选中的概率均为 k/i?从而对于n个元素,每个元素被选中的概率均为 k/n。
解:对于前k个元素,我们直接选中放入一个虚拟的蓄水池中,对于第 k+1 个元素,我们用 k/(k+1) 的概率选中它,一旦选中了,就随机替换掉蓄水池中的某一个元素,这样前 k 个被选中的元素在第 k+1 个元素到来时依然被选中的概率即为...
分类:
其他好文 时间:
2014-09-17 23:25:42
阅读次数:
392
编程珠玑第12章练习题10: 如何从n个对象(可以依次看到这n个对象,但事先不知道n的值)中随机选择一个?具体说来,如何在事先不知道文本文件行数的情况下读取文件,从中随机选择并输出一行? 解答:我们总选择 第1行,并以概率1/2选择第2行,以概率1/3选择第3行,依次类推,在这一过程结束时,每一行选...
分类:
其他好文 时间:
2014-08-05 13:28:19
阅读次数:
261