读取文件中的随机一行 Random Probability
2014-02-25 10:49
197 查看
假设有一个文本文件,文件中有若干行。要求返回随机的一行。每行的被选概率相同。
两种情况:
1、如果文件很大,不能全放入内存
2、如果是文件流
大文件的特点是不能载入内存随机读取,文件流的特点是只能读取一次。
类似随机选取问题:对于整数m和n,其中m<n,输出0~n-1范围内m个随机整数的有序列表,不允许重复。
计算每个i被输出的概率,会发现都是m/n,因此是等概率的随机选取。
两种情况:
1、如果文件很大,不能全放入内存
2、如果是文件流
大文件的特点是不能载入内存随机读取,文件流的特点是只能读取一次。
//伪代码 i = 1 chosen_line = "" while line has next: # random returns a uniform random number in [0,1) if random() < 1/i: chosen_line = line i += 1 line = line.next return chosen_line
类似随机选取问题:对于整数m和n,其中m<n,输出0~n-1范围内m个随机整数的有序列表,不允许重复。
void GenKnuth(int m, int n) { for(int i=0; i<n; ++i) { if((bigrand()%(n-i)) < m) { cout<<i<<endl; --m; } } }
计算每个i被输出的概率,会发现都是m/n,因此是等概率的随机选取。
相关文章推荐
- python随机读取文件中的某一行内容
- 随机读取txt文件的某一行
- 用vbs实现随机读取文件的一行内容的脚本
- 随机读取文件的某一行
- RandomAccessFile读取超大文件 随机读一行
- 随机读取文件中一行数据
- java读取文件夹下所有文件并替换文件每一行中指定的字符串
- fstream:一行一行的读取文件数据
- 使用BufferedReader的readLine方法读取文件的每一行数据
- STL 随机三趣题——随机重排,文件中随机取一行,生成N个随机数。
- 文件中随机读取行问题
- shell脚本:一次读取文件的一行,并输出
- shell读取文件的每一行
- JDK1.7 之java.nio.file.Files 读取文件仅需一行代码实现
- 关于C语言读取文件时候多读一行
- java一行一行写入或读取文件
- shell:读取文件的每一行内容并输出
- 如何只读取文件的一行内容
- shell脚本:一次读取文件的一行,并输出