我正在使用Corona SDK和Lua作爲編程語言來使用Corona SDK。從表中獲得隨機數時,我很困惑使用下列哪一個?Lua中math.random()和math.randomseed()之間的區別
math.random()
math.randomseed()
是否有人詳細說明它們之間的確切區別?所以我可以在我的情況下使用最好的一個。
我正在使用Corona SDK和Lua作爲編程語言來使用Corona SDK。從表中獲得隨機數時,我很困惑使用下列哪一個?Lua中math.random()和math.randomseed()之間的區別
math.random()
math.randomseed()
是否有人詳細說明它們之間的確切區別?所以我可以在我的情況下使用最好的一個。
如果您在致電math.random()
時需要相同的序列,則在致電math.random()
之前,您必須設置math.randomseed(same number every time before calling)
。
如果你想隨機數不同的序列,然後調用math.random()
因爲os.time()
會以秒爲單位返回的時間,因此每一次會有所不同面前經過math.randomseed(os.time())
。
請參考下面的鏈接,並檢查那裏的例子。
https://docs.coronalabs.com/api/library/math/randomseed.html
每次調用math.random時,都不應該將math.randomseed設置爲os.time!種子將靠近在一起,實際上它會更少隨機。只需在開始時調用它,讓數學。隨機做它的工作。 – warspyking
math.random
給你隨機數。你可能會在需要隨機數的程序中多次調用這個函數。
math.randomseed
決定從何處開始由math.random
給出的隨機數序列。您可能會在需要隨機數的程序中調用一次。
這似乎是一個常見的誤解,您需要在每次撥打math.random
之前致電math.randomseed
。這是錯誤並將擊敗math.random
的隨機性。
我很高興你提到最後一部分。師父沒有和我評論之前檢查你的笑聲。 – warspyking
我還補充說,調用'randomseed'與相同的數字會給你'random'返回的相同序列號,這在遊戲測試中有時很方便。 –
當您執行使用math.random
的程序時,如果沒有設置math.randomseed
,它通常會產生相同的一組隨機數。這是由於math.randomseed
負責爲math.random
帶出的隨機數設置默認seed
(或算法生成器)。
這種一致性顯然不是隨機的。請允許我舉一個例子 - 首先去Lua Demo Website,然後插入這段代碼:
for i = 1,10 do
print(math.random())
end
繼續持續達到的運行按鈕查看解釋將如何產生相同的號碼各一次。然而,要改變生成隨機數字的'種子',我們可以將'種子'設置爲當前時間(因爲當前時間不會重複)
這次進入網站並執行此代碼多次:
math.randomseed(os.time())
for i = 1,10 do
print(math.random())
end
您現在應該注意,您將如何每次獲得不同的數字。
https://en.wikipedia.org/wiki/Random_seed – hjpotter92