Как генерировать случайные значения при каждом запуске сценария 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() как семя, так как семена будут одинаковыми в течение всей секунды.

Другие вопросы по тегам