2011-06-21 84 views
3

可能重複:
How to create my own JavaScript Random Number generator that I can also set the seedJavascript中的任何僞隨機數生成器?

是否有任何的JavaScript隨機數發生器?

在你說Math.random()之前,我的要求是它應該允許一個種子值。對於相同的種子值,它應該產生完全相同的「隨機」數字序列,數字序列應該是相當隨機的。

+0

關於StackOverflow的一個類似的問題([如何創建我自己的JavaScript隨機數發生器,我也可以設置種子](http://stackoverflow.com/questions/424292/how-to-create-my-own -javascript-random-number-generator-that-i-can-also-set-the-s))給了這個網站談論它: http://davidbau.com/archives/2010/01/30/random_seeds_coded_hints_and_quintillions .html –

+0

是的,這是重複的。 StackOverflow的搜索引擎很糟糕。無論我用什麼搜索結果,我都不需要這些結果。 – AppleGrew

回答

14

對不起,這只是愛做:

function makeRandom(seed) { 
    var next = 4; // chosen by fair dice roll. 
        // guaranteed to be random 

    return function() { 
     return seed + next++; 
    }; 
} 

用法:

var random = makeRandom(492347239); 

var r1 = random(); 
var t2 = random(); 
... 

信用:http://xkcd.com/221/


NB:使它真正有用,更換返回與通用PRNG(如ARC4)一起使用。上面的代碼的真正目的是顯示如何在封閉中封裝狀態(即當前的種子),並反覆從該對象獲取連續的值。

+0

看看這裏:https://github.com/davidbau/seedrandom – CoDEmanX