我正在努力为我的学校制定一个抽奖计划(我们有一个经济体系)。
我的程序生成数字并将其保存到一个文本文件中。当我想要从我的生成器中“拉出”数字时,我希望它能确保有赢家。
问:如何让Python从我的文本文件中随机选择一行,并将输出作为该数字?
发布于 2013-02-18 02:50:38
如何让python从我的文本文件中随机选择一行,并将输出作为该数字?
假设文件相对较小,以下可能是最简单的方法:
import random
line = random.choice(open('data.txt').readlines())发布于 2013-02-19 06:52:55
如果文件非常大-您可以在给定文件大小的情况下查找文件中的随机位置,然后获得下一个完整的行:
import os, random
def get_random_line(file_name):
total_bytes = os.stat(file_name).st_size
random_point = random.randint(0, total_bytes)
file = open(file_name)
file.seek(random_point)
file.readline() # skip this line to clear the partial line
return file.readline()发布于 2016-02-23 21:41:43
def random_line():
line_num = 0
selected_line = ''
with open(filename) as f:
while 1:
line = f.readline()
if not line: break
line_num += 1
if random.uniform(0, line_num) < 1:
selected_line = line
return selected_line.strip()虽然这里给出的大多数方法都可以工作,但它们倾向于一次将整个文件加载到内存中。但不是这种方法。因此,即使文件很大,这也是可行的。
这种方法乍一看并不是很直观。这背后的定理表明,当我们在中看到N条线时,到目前为止,每条线都被选中的概率恰好是1/N。
https://stackoverflow.com/questions/14924721
复制相似问题