85
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]毎回であるとします。

4

4 に答える 4

36

シャッフル方法を決定する乱数発生器の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()

コードの「決定論的」部分の後

于 2013-10-10T22:03:03.973 に答える
-2

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]
于 2013-10-10T22:03:37.413 に答える