[LUA] Создание случайного сборщика песен - PullRequest
1 голос
/ 01 марта 2020

Я пытался получить случайную песню "Я сейчас использую плоды-заполнители", и она всегда возвращает Orange, и я не могу понять, почему.

math.randomseed(os.time())
local songLists = {"Apple", "Orange", "Pineapple"}
local songValue = math.random(#songLists)
local songSelected = songLists[songValue]

print(tostring(songSelected))

1 Ответ

0 голосов
/ 01 марта 2020

Lua использует PRNG (генератор псевдослучайных чисел) для вычисления случайного числа.

math.randomseed(os.time()) инициализирует формулу с каким-то видом данных текущего времени (не лучшее решение). os.time() дает текущее время с точностью до 1 с, это означает, что если вы выполните этот код в l oop в течение части секунды, вы получите тот же начальный номер (если часы не меняются). Лучше всего инициализировать случайную math.randomseed(...) после запуска приложения с лучшими случайными данными, такими как идентификатор процесса, os.clock (), ...

Скорее всего, ваша проблема в том, что math.randomseed(...) выполняется много раз с теми же начальными данными в этом коде или может быть в другой части приложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...