2016-03-03 23 views
1

我已經寫了一個名爲「lua_rand_gen」一個Lua腳本時間隨機值,包含下面的代碼:
如何生成每個I運行LUA腳本

function random_number_func() 
    math.randomseed(os.time()) 
    return (math.random(100000000,999999999)) 
end 

print (random_number_func()) 


當我運行lua_rand_gen腳本在循環中的終端,上述功能部未產生randome值如下所示:

for ((i=0;i<=5;i++)); do lua lua_rand_gen; done 

717952767 
717952767 
717952767 
717952767 
717952767 
717952767 


我知道這是因爲os.time()直到一秒才改變。那麼,如果運行lua腳本之間的時間差小於1秒,我怎樣才能在lua中獲得隨機數字。

回答

0

移動math.randomseed(os.time())以外的功能。

這似乎是一個常見的誤解,您需要在每次撥打math.random之前致電math.randomseed。這是錯誤,並將擊敗math.random的隨機性,尤其是如果您使用os.time()作爲種子,因爲種子在整秒內將是相同的。

+0

另請參閱http://stackoverflow.com/a/35455929/107090。 – lhf

+0

IMO,函數名稱「randomseed(seed)」不適合初學者。可能'startrandomsequence(sequenceid)'會更清楚嗎? –

+0

「lua_rand_gen」是一個腳本文件,每次運行腳本時,它都會執行寫入lua_rand_gen文件(如上所述)的函數並退出,如果我在1的時間間隔內運行腳本,則不會獲得隨機數字謝勝利 – Abhishek

相關問題