import random
x = [1, 2, 3, 4, 5, 6]
random.shuffle(x)
print x
リストをシャッフルする方法は知っていますが、シャッフルで毎回同じ結果が得られるようにパラメーターを使用してリストをシャッフルすることは可能ですか?
何かのようなもの;
random.shuffle(x,parameter)
結果はこのパラメーターと同じです。パラメータが4
あり、結果が[4, 2, 1, 6, 3, 5]
毎回であるとします。
import random
x = [1, 2, 3, 4, 5, 6]
random.shuffle(x)
print x
リストをシャッフルする方法は知っていますが、シャッフルで毎回同じ結果が得られるようにパラメーターを使用してリストをシャッフルすることは可能ですか?
何かのようなもの;
random.shuffle(x,parameter)
結果はこのパラメーターと同じです。パラメータが4
あり、結果が[4, 2, 1, 6, 3, 5]
毎回であるとします。
シャッフル方法を決定する乱数発生器のseed
( を受け入れる) を設定できます。parameter
import random
x = [1, 2, 3, 4, 5, 6]
random.seed(4)
random.shuffle(x)
print x
結果は常に
[2, 3, 6, 4, 5, 1]
残りのコードを「再ランダム化」するには、次のコマンドを実行して、乱数ジェネレーターにシステム時間を再シードするだけです。
random.seed()
コードの「決定論的」部分の後
Pythonリファレンスから:
オプションの引数 random は、[0.0, 1.0) のランダムな浮動小数点数を返す引数なしの関数です。デフォルトでは、これは関数 random() です
のシードと常に同じ値を返すラムダ関数を使用できますshuffle
。
In [7]: l = [1,2,3,4]
In [8]: random.shuffle(l, lambda: .5)
In [9]: l
Out[9]: [1, 4, 2, 3]
In [10]: l = [1,2,3,4]
In [11]: random.shuffle(l, lambda: .5)
In [12]: l
Out[12]: [1, 4, 2, 3] # same order as Out[9]