Может ли Python установить отсутствие порядка считаться случайным порядком?

Я хотел бы знать, является ли отсутствие упорядочения элементов встроенной структуры set Python "случайным образом". Например, взяв итератор множества, можно ли считать его перетасованным взглядом на его элементы?

(Если это имеет значение, я запускаю Python 2.6.5 на хосте Windows.)

Ответы

Ответ 1

Нет, это не случайно. Он "произвольно упорядочен", что означает, что вы не можете зависеть от того, что он является либо упорядоченным, либо случайным.

Ответ 2

Нет, вы не можете полагаться на него для какой-либо реальной статистической цели. Реализация наборов в Python относится к хеш-таблице и может привести к тому, что распределение элементов отображает некоторые очень неслучайные свойства. Там существует большой разрыв между "не имеющим гарантированного порядка" и "гарантированно неупорядоченным единообразно-случайным образом".

Используйте random.shuffle, чтобы действительно перемешать элементы последовательности.

Ответ 3

Арбитраж является центральным при разработке программ, каждая из этих свобод, которую вы резервируете , похожа на карту джокера, которую вы можете использовать при реализации, разработке или перезаписи своей программы. Чем больше этих свободных карт вы соберете, тем эффективнее вы можете избавиться от своего кода (возможно), так как у вас больше свободы для его изменения.

Это не случайно, это только свобода. Если он будет лучше установлен таким образом, заказ может быть отправлен по средам и "назад" по пятницам.

Ответ 4

Словом, no:

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

Ответ 5

Просто заметьте о строгом порядке. Похоже, что это очень ненадежно даже в той же рабочей среде.

Например, этот код дает разные ответы:

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

введите описание изображения здесь