2016-02-17 50 views

回答

1

如果您在致電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

+2

每次調用math.random時,都不應該將math.randomseed設置爲os.time!種子將靠近在一起,實際上它會更少隨機。只需在開始時調用它,讓數學。隨機做它的工作。 – warspyking

4

math.random給你隨機數。你可能會在需要隨機數的程序中多次調用這個函數。

math.randomseed決定從何處開始由math.random給出的隨機數序列。您可能會在需要隨機數的程序中調用一次

這似乎是一個常見的誤解,您需要在每次撥打math.random之前致電math.randomseed。這是錯誤並將擊敗math.random的隨機性。

+1

我很高興你提到最後一部分。師父沒有和我評論之前檢查你的笑聲。 – warspyking

+2

我還補充說,調用'randomseed'與相同的數字會給你'random'返回的相同序列號,這在遊戲測試中有時很方便。 –

1

當您執行使用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 

您現在應該注意,您將如何每次獲得不同的數字。