Я хотел бы знать если отсутствие об упорядочивании элемента встроенного Python set
структура "достаточно случайна". Например, беря итератор набора, это можно считать переставленным представлением его элементов?
(Если это имеет значение, я запускаю Python 2.6.5 на хосте Windows.)
Нет, это не случайное. Он «произвольно упорядочен», что означает, что вы не можете зависеть от его упорядоченности или случайности.
Нет, вы не можете полагаться на это для каких-либо реальных статистических целей. Реализация наборов в Python осуществляется в виде хеш-таблицы и может привести к тому, что распределение элементов будет отображать некоторые очень неслучайные свойства. Существует большой разрыв между «отсутствием гарантированного порядка» и «гарантированно неупорядоченным равномерно-случайным образом».
Используйте random.shuffle
для , чтобы действительно перемешать элементы последовательности.
Одним словом, нет:
>>> list(set(range(10000))) == list(range(10000))
True
Произвол является центральным при разработке программ, каждая из этих свобод, которые вы оставляете , подобна карточке-шутнику , которую вы можете использовать при реализации, разработке или переписывании вашей программы. Чем больше этих бесплатных карточек вы соберете, тем больше эффективности вы сможете добиться от своего кода (возможно), поскольку у вас будет больше свободы для его изменения.
Это не случайность, это просто свобода. Если так настроить, то по средам заказ может быть переадресован, а по пятницам - «назад».