2012-05-29 75 views
1

我需要在我正在進行的遊戲中獲得一個非常隨機的數字。問題是Math.random()讓我得到完全相同的結果,因爲它基於時間戳,我使用它隨機定位遊戲對象,我需要立即獲得隨機位置。 有比Math.random()更好的方法嗎?什麼是在JavaScript中獲得隨機數的最佳方法

https://github.com/suprMax/monkyTime/blob/master/static/monkytime.js#L201

對象被定位成非常接近彼此。我試圖讓它更隨機地從請求動畫幀中竊取高精度時間,但無濟於事。

+0

這裏是你的問題的答案: http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript – Dev

+0

@dev:...他們都使用'Math.random()',除了建議使用AJAX調用服務器的那些... – Guffa

+0

「Math.random()得到我完全相同的結果」 - 向我們展示您的代碼,並且我們可以告訴您錯誤是。 – AakashM

回答

0

如果Math.random()不夠隨機(這是一個僞隨機數生成器),那麼使用一個真正的隨機生成器。

它需要使用一些遠程數據來獲得足夠的熵(例如鼓風機中的球,白噪聲等)。您可能需要爲此創建或使用現有服務。

1

隨機發生器從當前時間播種的事實不會使其返回相同的結果是後續調用。每次你調用它時,它都會爲它自己添加新的值,它只是受時鐘影響的初始值。

+0

我同意,它在這裏看起來相當隨意http://jsfiddle.net/w7uYL/。奇怪的是,我將物體定位得非常接近 – Max

0

大多數瀏覽器中的僞隨機數生成器應該足以在遊戲中定位對象。當然,如果你已經正確實施,你不應該一遍又一遍地得到相同的結果。

如果你絕對需要結果是不可預測的(如加密),你需要看看cryptographically secure PRNGs

相關問題