Выберите случайный предмет из таблицы

Этот код не будет вызываться, если он находится за пределами определенной функции для класса. Если бы это было разрешено, все внутри класса было бы выполнено, как только вы создали класс, который не является желательным.

29
задан Alexander 25 January 2018 в 08:25
поделиться

2 ответа

Тест:

t = {'a', 'b', 'c'}
print(t[0])

дает ноль . Фактически 0 находится за пределами границ (попробуйте t [20] ) ... поэтому random должно быть от 1 до #myTable (включительно), потому что первый элемент таблица помечается (индексируется) как 1, если вы пишете просто exp , см. Конструктор таблиц (" Наконец, поля формы exp эквивалентны [i] = exp, где i - последовательные целые числа, начинающиеся с 1. ").

Если вы передадите в math.random только аргумент n , вы получите случайное число от 1 до n включительно. Это исправляет ваш пример:

print(myTable[math.random(#myTable)])
1
ответ дан 28 November 2019 в 01:01
поделиться

Lua индексирует таблицы с 1, в отличие от C, Java и т. Д., Которые индексируют массивы с 0. Это означает, что в в вашей таблице допустимые индексы: 1, 2, 3, 4. Вы ищете следующее:

print( myTable[ math.random( #myTable ) ] )

При вызове с одним аргументом math.random (n) возвращает случайное целое число от 1 до n включительно.

62
ответ дан 28 November 2019 в 01:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: