我習慣打字random.randrange
。我會做一個from random import Random
從現在開始發現錯誤。python的random.Random.seed是如何工作的?
對於涉及程序生成的遊戲(不,不是的Minecraft克隆:P)我想保持幾個不同的僞隨機數生成器:
- 一個世界的一代(景觀,任務等),
- 一個用於世界上可能發生的隨機事件(比如戰鬥中的傷害)。
理由是我希望能夠重現第一個,所以我不希望第二個干預。
我以爲random.Random
是爲此做出的。然而令我困惑的是:
import random
rnd = random.Random()
rnd.seed(0)
print [random.randrange(5) for i in range(10)]
rnd.seed(0)
print [random.randrange(5) for i in range(10)]
產生兩個不同的序列。當我做rnd = random
然後事情按預期工作,但我確實需要幾個發電機。
我錯過了什麼?
它實際上花了我幾分鐘時間來發現。不要爲我們所有人感到難過,很高興它解決了:) –