【发布时间】:2016-10-07 17:16:14
【问题描述】:
我有一个包含155k 文件的列表。当我random.sample(list, 100) 时,虽然结果与之前的样本不同,但它们看起来很相似。
有没有比random.sample 更好的替代方法来返回一个包含随机 100 个文件的新列表?
folders = get_all_folders('/data/gazette-txt-files')
# get all files from all folders
def get_all_files():
files = []
for folder in folders:
files.append(glob.glob("/data/gazette-txt-files/" + folder + "/*.txt"))
# convert 2D list into 1D
formatted_list = []
for file in files:
for f in file:
formatted_list.append(f)
# 200 random text files
return random.sample(formatted_list, 200)
【问题讨论】:
-
整个
random库是伪随机的。没有半衰期衰减,除了网络噪声之外,还有什么是“真正”随机的。 -
通常,随机性的主要问题是人类对随机性的感知是完全错误的。我们不断在完全随机的信号中看到“非随机”模式。我们的大脑就是这样工作的。
-
如果你想要更可靠的随机性,请实例化
SystemRandom()。尽管如此,您可能只需要相信 python 的随机性在这一点上非常好,考虑到如果它有任何问题,它早就已经解决了。 -
“看起来相似”是什么意思?到生日 Paraox 时,您在前一个样本中点击至少一个文件的可能性非常大,大约为 1-exp(-(100)^2 / (2*155000)) = 3.2%
标签: python python-3.x random