0

私はこの例に従っていました https://stackoverflow.com/a/9009657/1890488

彼はこれを結果として持っています

>>> import random
>>> rnd = random.Random(0)
>>> [rnd.randint(0, 10) for i in range(10)]
[9, 8, 4, 2, 5, 4, 8, 3, 5, 6]
>>> rnd = random.Random(0)
>>> [rnd.randint(0, 10) for i in range(10)]
[9, 8, 4, 2, 5, 4, 8, 3, 5, 6]
>>> rnd = random.Random(1)
>>> [rnd.randint(0, 10) for i in range(10)]
[1, 9, 8, 2, 5, 4, 7, 8, 1, 0]

私はほとんど問題がありません

  1. 最初の 2 つのシーケンスが同じである理由
  2. 引数として 1 を渡すと、最初の値がどのように 1 になるかを意味します
4

2 に答える 2

3

最初の 2 つのシーケンスは、同じ値でシードしたため同じです。これは機能です

設定可能なシードを使用すると、同じシードを再利用して意図的にシーケンスを繰り返すことができます。これは、たとえば、オリジナルとまったく同じゲームのリプレイを実装するために使用できますが、ゲームはゲーム内の遭遇または一部の AI 決定に乱数ジェネレーターを使用します。

于 2013-03-09T12:53:30.413 に答える
2

それは単なる疑似乱数ジェネレーターだからです。これは(数学的な意味で) 適切な二乗分布を持つ関数です。一般的な方法は、シードとしてミリ秒単位のシステム時間を使用することです。

rnd = random.Random(int(round(time.time() * 1000)))
于 2013-03-09T10:45:10.270 に答える