2010-12-29 4 views
8

こんにちは 私は学校のプロジェクトでこれをやっているので(私は高度な機能を使うことができません)、私はPython 2.6.6を使用しています。私のリスト内の数字はになるようシード付きのPythonランダムシーケンス

448は、どのように私はその種子とランダムシーケンスを生成することができ、言うことができます、

は、私が1000年に1から番号のリストを持っていると私の種子は次のようになります別のインデックス?

シードを知っていれば、私のリストの要素を最初の位置に戻すことは可能ですか?

ご迷惑をかけて申し訳ございませんが、英語は母国語ではありません。

おかげで、

Favolas

+1

http://docs.python.org/release/2.6.6/library/random.htmlあなたが知る必要があることをすべて教えてくれます。 –

+0

@Rafe前に読んだことがありますが、理解できませんでした – Favolas

答えて

24
import random 
SEED = 448 

myList = [ 'list', 'elements', 'go', 'here' ] 
random.seed(SEED) 
random.shuffle(myList) 

print myList 

結果が今pseudorandomizedされます。

同じシードとアイテム数を持つすべてのリストが同じ 'ランダム'の順序で返されるため、 '疑似'が重要です。これを使用してリストをシャッフル解除することができます。本当にランダムであれば、これは不可能です。

['list', 'elements', 'go', 'here'] 

Order = list(range(len(myList))) 
# Order is a list having the same number of items as myList, 
# where each position's value equals its index 

random.seed(SEED) 
random.shuffle(Order) 
# Order is now shuffled in the same order as myList; 
# so each position's value equals its original index 

originalList = [0]*len(myList) # empty list, but the right length 
for index,originalIndex in enumerate(Order): 
    originalList[originalIndex] = myList[index] 
    # copy each item back to its original index 

print originalList 

結果

多田! originalListはmyListの元の順序になりました。

+0

Hughに感謝します。それが私の質問を解決した – Favolas

1

は、Pythonドキュメント http://docs.python.org/library/random.html 上の簡単なチェックでは、シードを初期化するために使用することができますについて

random.seed([x]) 

を示しています。

あなたのイニシャルの順番でアイテムを再度取得するには、シードを再度設定し、再度乱数を取得します。このインデックスを使用して、リスト内のコンテンツを取得したり、インデックスを何でも使用することができます。

リストを並べ替えるだけで、ソートされた順序で再度表示されます。

['here', 'go', 'list', 'elements'] 

リストに

+0

前にそれを読むが、理解しなかった。私はランダムに行った。シード(448)と私に何も与えていない。私はこのwhitmの私のリストをどうやって使うことができますか? – Favolas

+0

シード関数を使用してシードを設定します。次に、そのモジュール内の別のメソッドを呼び出して、次の乱数を取得します。 – Kissaki

関連する問題