【发布时间】:2015-02-17 07:21:18
【问题描述】:
我正在使用模块 random 来洗牌 n 元素的数组。我需要这样做m 次,我不完全确定每次发生的洗牌是独立的。
请看下面的示例:
for i in range(10):
a = list(range(1,20))
random.shuffle(a)
print("\n\nSequence of numbers ")
for item in a:
print(item)
我可以完全确定我第二次shuffle list a 将完全独立于第一次吗?
查看结果我的印象是输出不是独立的。但也许这只是我的印象。
例如,我得到 4 个数字和 4 个重复的输出如下 [1, 3, 2, 4], [1, 3, 2,4], [4, 1, 3, 2] 和[1、4、3、2]。这是偶然发生的吗?可能是。但我想确定。
上下文:可能是我想订购我要给 m 个学生的考试的第 n 个问题。但我希望这个过程对每个学生都是独立完成的。
【问题讨论】:
-
什么是输出?你为什么会从中得到这种印象?
-
人类在评估随机性方面是notoriously bad。您需要多大程度地确定洗牌是“独立的”?独立是什么意思 - 请注意,完全相同的顺序可能会随机再次出现。你考虑过
urandom,如果它那么重要吗? -
是的,我知道人类不擅长评估随机性。但我只是想知道我是否需要在我的代码中采取一些额外的措施(例如重置种子),或者这样是否可以。我对这个python模块不熟悉。
-
例如,我得到的输出如下
-
会偶然发生吗?当然,你每次都会得到
[1, 2, 3, 4],这并不意味着它不是随机的。 它是偶然发生的吗?不,random是严格的 psuedorandom,而不是真正随机的。这有关系吗?几乎可以肯定不是!如果两个学生以相同的顺序(或与a process they know little about 有某种关联的顺序)回答问题,为什么这很重要?
标签: python loops random shuffle