18

setPythonの組み込み構造に要素の順序がないことが「十分にランダム」であるかどうかを知りたいのですが。たとえば、セットのイテレータを取り上げると、その要素のシャッフルされたビューと見なすことができますか?

(重要な場合は、WindowsホストでPython 2.6.5を実行しています。)

4

5 に答える 5

34

いいえ、ランダムではありません。これは「任意に順序付けられている」ため、順序付けされているかランダムであるかに依存することはできません。

于 2010-05-18T19:19:24.987 に答える
6

一言で言えば、いいえ:

>>> list(set(range(10000))) == list(range(10000))
True
于 2010-05-18T19:38:11.430 に答える
4

いいえ、実際の統計目的でこれを信頼することはできません。Pythonでのセットの実装はハッシュテーブルの観点から行われ、要素分布にいくつかの非常に非ランダムなプロパティを表示させる可能性があります。「順序が保証されていない」と「均一にランダムに順序付けされていないことが保証されている」との間には大きなギャップがあります。

シーケンスの要素random.shuffle実際にシャッフルするために使用します。

于 2010-05-18T19:21:01.537 に答える
4

プログラムを設計するときは恣意性が中心です。予約するこれらの自由はそれぞれ、プログラムを実装、開発、または書き直すときに使用できるジョーカーカードのようなものです。収集するこれらのフリーカードが多ければ多いほど、コードを変更する自由が増えるため、コードから(おそらく)効率を高めることができます。

それはランダムではなく、ただの自由です。そのように設定した方がよい場合は、注文を水曜日に転送し、金曜日に「逆方向」にすることができます。

于 2010-05-18T19:45:10.150 に答える
4

注文の厳密さについてのメモ。同じ実行環境でも非常に信頼性が低いようです。

たとえば、このコードはさまざまな答えを出します。

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

ここに画像の説明を入力してください

于 2017-07-25T04:31:35.707 に答える