我想知道 Python 内置set
结构中缺少元素排序是否“足够随机”。例如,取一个集合的迭代器,是否可以将其视为其元素的混洗视图?
(如果重要的话,我在 Windows 主机上运行 Python 2.6.5。)
不,这不是随机的。它是“任意排序的”,这意味着您不能依赖它是有序的还是随机的。
一句话,不:
>>> list(set(range(10000))) == list(range(10000))
True
在设计程序时,任意性是核心,您保留的这些自由中的每一个都像一张百搭牌,您可以在实施、开发或重写程序时使用它。您收集的这些免费卡片越多,您从代码中提供的效率就越高(可能),因为您有更多的自由来更改它。
这不是随机的,它只是自由。如果这样设置更好,则订单可以在星期三向前,在星期五“向后”。
不,您不能将其用于任何真正的统计目的。Python 中集合的实现是根据哈希表来实现的,并且会导致元素分布显示一些非常非随机的属性。“没有保证顺序”和“保证以统一随机方式无序”之间存在很大差距。
用于真正random.shuffle
打乱序列的元素。