Python的缺乏排序可以被认为是随机顺序吗?

时间:2010-05-18 19:17:24

标签: python random set shuffle

我想知道Python的内置set结构缺少元素排序是否“足够随机”。例如,取一个集合的迭代器,它可以被认为是其元素的混乱视图吗?

(如果重要的话,我在Windows主机上运行Python 2.6.5。)

5 个答案:

答案 0 :(得分:27)

不,随机。它是“任意排序”,这意味着你不能依赖它是有序的还是随机的。

答案 1 :(得分:4)

不,你不能依赖它来实现任何真正的统计目的。 Python中集的实现是根据哈希表来实现的,并且可以使元素分布显示一些非随机属性。 “没有保证订单”和“保证以统一随机方式无序”之间存在很大差距。

使用random.shuffle 真正随机播放序列元素。

答案 2 :(得分:4)

在设计程序时,任意性是至关重要的,您保留的每一项自由就像一张小丑卡,您可以在实施,开发或重写程序时使用这些自由。您收集的这些免费卡越多,您可以从代码中提供更高的效率(可能),因为您可以更自由地更改它。

这不是随机的,只是自由。如果这是一个更好的设置方式,订单可以在周三转发,也可以在周五转发。

答案 3 :(得分:3)

总之,不,

>>> list(set(range(10000))) == list(range(10000))
True

答案 4 :(得分:0)

只是关于订单严格的说明。即使在相同的运行环境中,它似乎也非常不可靠。

例如,此代码给出了不同的答案:

data = 'KSRNDOW3GQ'
chars = set(data)
print(list(chars))

enter image description here