如何从一个文件读取随机行?

如何从一个文件读取随机行?,第1张

如何从一个文件读取随机行?

不是内置的,但是

R(3.4.2)
Knuth的“计算机编程的艺术”中的算法(Waterman的“ Reservoir
Algorithm”)很好(在非常简化的版本中):

import randomdef random_line(afile):    line = next(afile)    for num, aline in enumerate(afile, 2):      if random.randrange(num): continue      line = aline    return line

所述

num, ... in enumerate(..., 2)
迭代器产生的序列2,3,4
…的
randrange
因此将0的概率
1.0/num
-这与我们必须替换当前选定的行(被引用的算法的样本大小1的特殊情况的概率-
有关正确性==的信息,请参阅Knuth的书,当然,我们还需要足够小的“存储库”来存储内存;-))…以及我们 这样做的 确切概率。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5629507.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-15
下一篇 2022-12-15

发表评论

登录后才能评论

评论列表(0条)

保存