Как генерировать случайные значения при каждом запуске сценария lua
Я написал скрипт lua с именем "lua_rand_gen", который содержит следующий код:
function random_number_func()
math.randomseed(os.time())
return (math.random(100000000,999999999))
end
print (random_number_func())
когда я запускаю скрипт lua_rand_gen в терминале в цикле, вышеуказанная функция не генерирует случайные значения, как показано:
for ((i=0;i<=5;i++)); do lua lua_rand_gen; done
717952767
717952767
717952767
717952767
717952767
717952767
Я знаю, что это потому, что os.time() не меняется до одной секунды. Итак, как я могу получить Случайное число в lua, если разница во времени выполнения сценария lua составляет менее 1 секунды.
1 ответ
Переехать math.randomseed(os.time())
вне функции.
Кажется, это распространенное заблуждение, что вам нужно позвонить math.randomseed
перед каждым звонком math.random
, Это неправильно и победит случайность math.random
особенно если вы используете os.time()
как семя, так как семена будут одинаковыми в течение всей секунды.