我想知道Python的内置set
结构缺少元素排序是否“足够随机”。例如,取一个集合的迭代器,它可以被认为是其元素的混乱视图吗?
(如果重要的话,我在Windows主机上运行Python 2.6.5。)
答案 0 :(得分:27)
不,不随机。它是“任意排序”,这意味着你不能依赖它是有序的还是随机的。
答案 1 :(得分:4)
不,你不能依赖它来实现任何真正的统计目的。 Python中集的实现是根据哈希表来实现的,并且可以使元素分布显示一些非随机属性。 “没有保证订单”和“保证以统一随机方式无序”之间存在很大差距。
使用random.shuffle
真正随机播放序列元素。
答案 2 :(得分:4)
在设计程序时,任意性是至关重要的,您保留的每一项自由就像一张小丑卡,您可以在实施,开发或重写程序时使用这些自由。您收集的这些免费卡越多,您可以从代码中提供更高的效率(可能),因为您可以更自由地更改它。
这不是随机的,只是自由。如果这是一个更好的设置方式,订单可以在周三转发,也可以在周五转发。
答案 3 :(得分:3)
总之,不,
>>> list(set(range(10000))) == list(range(10000))
True
答案 4 :(得分:0)