2013-08-13 4 views
13

Итак, я пытаюсь создать что-то, и я повсюду искал способы генерации случайного числа. Однако независимо от того, где я тестирую свой код, это приводит к неслучайному числу. Вот пример, который я написал.Lua math.random не работает

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) 

Где бы я ни тестировал свой код, я получаю тот же результат. Например, когда я тестирую код здесь http://www.lua.org/cgi-bin/demo, он всегда заканчивается «Ионным пулеметным пулеметным бластером» и не рандомизируется. В этом отношении просто тестирование

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

дает мне 9, есть ли что-то, что мне не хватает?

ответ

23

Вам необходимо запустить math.randomseed() раз перед использованием math.random(), как это:

math.randomseed(os.time()) 

Одна из возможных проблем является то, что первый номер не может быть так «рандомизированное» в некоторых платформах. Таким образом, лучшим решением будет совать некоторое случайное число, прежде чем использовать их для реального:

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

Ссылка: Lua Math Library

+0

Запуск обновленной версии моего кода с этой линией, кажется, делает трюк на этом Lua код демо здесь http://www.lua.org/cgi-bin/demo, однако, запуск того же кода в моей идее lua eclipse дает мне ту же самую оригинальную проблему, с которой я столкнулся, это не похоже на рандомизацию, может быть, это проблема с моей IDE? – user2677006

+1

@ user2677006 Попробуйте вызвать 'math.random()' сразу после 'math.randomseed()', посмотрите, исправлено ли это. –

+0

Это, казалось, исправить проблему, как я не знаю точно, но большое спасибо. – user2677006

Смежные вопросы