我有一個測試項目,其中一些實體可以發射子彈,並根據命中方向和一些隨機值,它可以影響或偏轉。Python3:如何爲每個對象生成一個僞隨機序列?
當離線運行時,它很容易隨時隨地產生隨機數字,以便判斷一個鏡頭是否應該彈跳,如random.randint()
或random.random()
。
但我期待通過UDP廣播射擊事件,以便其他客戶端可以在其屏幕上顯示相同的實體/射彈。
投射物速度非常高,所以我不能等待服務器告訴我過去的位置,只是使用它(我可以改正軌跡)。主要思路是接收來自遠程實體的fire
呼叫,獲得一些值,如position, velocity, randseed
。
我的問題是如何爲每個實體使用種子?假設我在我的屏幕上同時有10個子彈,每個子彈都有自己的僞隨機種子,我希望子彈生成他們自己的僞序列,就像它們在網絡的一側或另一側那樣。
例子:
class Bullet(object): def __init__(self, pos, v, seed): self.randgen = InstanciableGenerator(seed) # ... def hit(self, pos, ...): currentRandom = self.randgen.get() # ...
讓每個實例都有自己的隨機序列,沒有一個由
random.seed()
在每個random.random()
調用共享。
如何生成不同的僞隨機序列?
如果這不是一個好主意,那麼廣播一個觸發事件的最佳方法是什麼,以便它與所有客戶端+服務器有點同步?
PS:服務器具有完全權限,同步用於顯示目的。
那麼之前的包裝,那是快......它發生,我沒有在'random'找到這個'Random'對象的文件......但是在你提到它之後,文件中確實提到了它,儘管在某些段落中該對象被認爲是「隱藏的」。我的錯。非常感謝 ! – WKnight02