遊戲中經常要用到隨機數,但如果乙個沒有隨機種子的的生成器,就沒法重複之前的隨機數了。js的math.random就用不了隨機種子,只好自己弄了乙個,有了隨機種子,每次只要傳入相同的種子,都會得到同樣的隨機數。直接**:
function seededrandom(seed, min, max)
這是一種偽隨機數生成器,叫做線性同餘生成器。
如果你傳入相同的種子,確實會得到一樣的結果,但是隨機種子怎麼變化比較好呢,如果只是單純的遞增,或有些規律,會發現得到的結果也是有規律的,所以我們的種子也得隨機的變化。**:
var randomseed = 0;
function random(min, max) {
var seed = randomseed;
min = min || 0;
max = max || 1;
var result = seededrandom(seed, min, max);
randomseed += math.floor(seededrandom(seed, 1, 100000));
return result;
這樣就很隨機了,並且只要一開始randomseed是一樣的,每次得到的序列都是一樣的。那麼在遊戲中,只要記錄一開始的randomseed。比如是當前時間,如果想得到之前的隨機序列,只要設定randomseed為之前的記錄就行了。
參考:
隨機數與隨機種子
對隨機數的使用較少,因此沒有深入了解過其產生原理。這裡涉及到兩個函式,rand 和srand 前者是生成乙個偽隨機數,後者是生成乙個隨機種子。rand 可以生成乙個0 rand max之間的乙個隨機數,返回值是乙個unsigned int型別值。如下 cpp view plain copy incl...
隨機種子,random seed,偽隨機數
此處討論的隨機種子適用於random模組,numpy,torch等。我們將以random模組為例。python中的隨機數其實是所謂的 偽隨機數 它的生成並不是完全無跡可尋的。偽隨機數生成器通過對 某個值 執行系列操作來獲得偽隨機值。通常,這 某個值 來自上乙個隨機數生成器生成的值。但是,當你新開啟乙...
隨機數生成器
標頭檔案 內容 rand,srand函式和rand max常量 rand max 在windows系統中為32767 在類unix系統中為2147483647 rand 函式返回乙個0 rand max的隨機整數 srand seed 函式 接受unsigned int 型別的引數seed,以see...