【发布时间】:2016-05-05 02:34:27
【问题描述】:
我指的是 Python 随机模块的 shuffle 功能。
from random import shuffle
list = [1, 2, 3, 4]
shuffle(list)
我猜上面的函数使用随机种子。我知道在 C 中,rand 函数会迭代计算机中的一些随机种子数。因此,当循环函数时,随机函数不再变得随机。
shuffle 函数的工作方式与 C 中的 rand 函数类似吗?如果是这样,我如何添加自己的随机种子? (我正在考虑以毫秒为单位的时间来得出独特的价值)。
之前就这个问题的已接受答案发表了评论,但没有得到任何回复 (Shuffling a list of objects in python)
编辑:
我想确保随机洗牌不会在循环中重复其洗牌方法。例如,
我想随机播放 [1, 2, 3, 4, 5, 6]
我循环了超过 10000 次。
它产生以下结果: [1、3、2、4、5、6] [2、1、4、5、3、6] ...(大量不同的洗牌组合) [1、3、2、4、5、6] [2、1、4、5、3、6] ...(重复模式)。
我想避免上述行为,因为我正在循环大量数据。上述行为会首先发生吗?如果是这样,我是否必须在一定数量的循环后更改种子?
【问题讨论】:
-
“迭代计算机中的几个随机种子数”是什么意思?你是在问输出是否是确定性的?您是在问它是“真正”随机还是只是伪随机?
-
我回答了您的评论,但这个问题表明缺乏任何研究工作(因此被否决) - 确切的行为在
randommodule 中有明确记录。 -
您的后续问题也在文档中得到解答;
random模块“周期为 2**19937-1”,这意味着它会在经过这么多步骤后输出相同的值序列。如果不清楚,那是一个巨大的数字。出于所有实际目的(密码学除外),它与真正的随机性没有区别。
标签: random-sample