Mon*_*ons 4 python random loops shuffle python-3.x
好的,所以我有多个文本文件,每个文件包含超过500.000甚至1.000.000行.
目前我这样做:
import random
def line_function(line):
# Do something with given line
def random_itteration(filepath):
with open(filepath) as f:
lines = f.readlines()
random.shuffle(lines)
for line in lines:
result = line_function(line)
Run Code Online (Sandbox Code Playgroud)
问题是,在Python的文件上random.shuffle()清楚地状态(我加的):
注意,即使对于小len(x),x的排列总数也可以快速增长,大于大多数随机数生成器的周期.这意味着永远不会产生长序列的大多数排列.例如,长度为2080的序列是可以在Mersenne Twister随机数生成器的周期内拟合的最大序列.
所以问题是:
什么是使我的设置按预期工作的最快和最有效的方法?
更多信息:
我有理由将line_function()应用于随机行,而不是简单地按照它们所处的顺序迭代它们.另请注意,我更倾向于只处理每一行一次.
最后,不幸的是,将文本文件预先混洗或将其分成较小的文件是不可取的.而不是我要问的.
任何见解都更受欢迎!Thnx提前了.
正如Mark Dickinson所说,您引用的文档行对现实世界的代码基本上没有实际意义.它绝对与您的代码没有任何关联.
shuffle是否在所有可能的排列上产生真正均匀的随机分布并不重要.重要的是洗牌是否可以与这种分布区分开来,达到某种可区分标准.random.shuffle在统计上无法区分完全随机的混乱,直到Mersenne Twister算法的质量,并且它的可区分方式与周期无关.
您无需执行任何特殊操作即可使设置"按预期工作".random.shuffle已经有效了.
| 归档时间: |
|
| 查看次数: |
314 次 |
| 最近记录: |