6

以下はpythonのウェブサイトからのものです。

random.shuffle(x[, random])

その場でシーケンスをシャッフルしますx。オプションの引数 random は、ランダムな float を返す引数なしの関数[0.0, 1.0)です。デフォルトでは、これは関数random()です。

len(x)かなり小さい の場合でも、 の順列の総数はx、ほとんどの乱数発生器の周期よりも大きいことに注意してください。これは、長いシーケンスのほとんどの順列は決して生成できないことを意味します。

のランダム順列を繰り返し取得したい場合['a'..'k']、シャッフルではランダム性が得られないようです。私の理解は正しいですか?

ありがとうございました!

4

2 に答える 2

6

長さ 11 のシーケンスの場合、11! または 39,916,800 (~ 2 25.3 ) の可能な順列。Mersienne Twister (Python のランダム アルゴリズム) の場合、周期は 2 19937 − 1 です。つまり、問題ありません。

于 2010-07-01T17:41:29.513 に答える
6

何も心配する必要はありません。underlen(x)は 2000 未満ですが、random.shuffle問題なく動作するはずです。

于 2010-07-01T17:35:13.077 に答える