2013-08-13 37 views
13

Vì vậy, tôi đang cố gắng tạo ra một chút gì đó và tôi đã xem xét tất cả các nơi tìm cách tạo ra một số ngẫu nhiên. Tuy nhiên không có vấn đề mà tôi kiểm tra mã của tôi, nó kết quả trong một số không ngẫu nhiên. Đây là một ví dụ tôi đã viết lên.Lua math.random không hoạt động

local lowdrops = {"Wooden Sword","Wooden Bow","Ion Thruster Machine Gun Blaster"} 
local meddrops = {} 
local highdrops = {} 

function randomLoot(lootCategory) 
    if lootCategory == low then 
     print(lowdrops[math.random(3)]) 
    end 
    if lootCategory == medium then 

    end 
    if lootCategory == high then 

    end 
end 

randomLoot(low) 

Bất cứ nơi nào tôi kiểm tra mã của mình đều nhận được kết quả tương tự. Ví dụ khi tôi kiểm tra mã ở đây http://www.lua.org/cgi-bin/demo nó luôn luôn kết thúc với "Ion Thruster Machine Gun Blaster" và không ngẫu nhiên. Để kiểm tra vấn đề đó chỉ đơn giản là

random = math.random (10) 
print(random) 

cho tôi 9, có điều gì đó tôi bị thiếu không?

Trả lời

23

Bạn cần phải chạy math.randomseed() một lần trước khi sử dụng math.random(), như thế này:

math.randomseed(os.time()) 

Một vấn đề có thể là do số đầu tiên có thể không được như vậy "ngẫu nhiên" trong một số nền tảng. Vì vậy, một giải pháp tốt hơn là để bật một số số ngẫu nhiên trước khi sử dụng chúng cho thật:

math.randomseed(os.time()) 
math.random(); math.random(); math.random() 

tham khảo: Lua Math Library

+0

Chạy phiên bản cập nhật của mã của tôi với dòng điều đó dường như làm các trick về vấn đề này bản demo đang lua đây http://www.lua.org/cgi-bin/demo tuy nhiên, chạy cùng một mã trên idl thực nhật lua của tôi mang lại cho tôi cùng một vấn đề ban đầu tôi đã có, nó doesen't dường như được ngẫu nhiên, nó có thể là một vấn đề với IDE của tôi? – user2677006

+1

@ user2677006 Hãy thử gọi 'math.random()' một lần ngay sau 'math.randomseed()', xem nó đã được sửa chưa. –

+0

Điều này dường như để khắc phục vấn đề, làm thế nào tôi không biết chắc chắn nhưng cảm ơn bạn rất nhiều. – user2677006