Sui*_*pps 9 python random file python-3.3
我正在尝试为我的学校制作一个彩票计划(我们有一个经济系统).
我的程序生成数字并将其保存到文本文件中.当我想从我的发电机中"拉出"数字时,我希望它确保有一个胜利者.
问:我如何让Python从我的文本文件中选择一个随机行并将输出作为该数字?
NPE*_*NPE 15
我怎么让python从我的文本文件中选择一个随机行并将我的输出作为该数字?
假设文件相对较小,以下可能是最简单的方法:
import random
line = random.choice(open('data.txt').readlines())
Run Code Online (Sandbox Code Playgroud)
Ali*_*fee 12
如果文件非常大 - 您可以在给定文件大小的文件中寻找随机位置,然后获取下一个完整行:
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()
Run Code Online (Sandbox Code Playgroud)
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()
Run Code Online (Sandbox Code Playgroud)
虽然这里给出的大多数方法都有效,但它们倾向于将整个文件一次加载到内存中.但不是这种方法.因此,即使文件很大,这也行得通.
乍一看,这种方法并不是很直观.这背后的定理指出,当我们看到N条线存在恰好1/N的概率时,到目前为止它们中的每一条都被选中.
归档时间: |
|
查看次数: |
19072 次 |
最近记录: |