Без аргументов функция math.random
возвращает число в диапазоне [0,1).
Lua 5.1.4 Copyright (C) 1994-2008 Lua.org, PUC-Rio
> =math.random()
0.13153778814317
> =math.random()
0.75560532219503
Так что просто конвертируйте свой «шанс» в число от 0 до 1: то есть
> function maybe(x) if math.random() < x then print("yes") else print("no") end end
> maybe(0.5)
yes
> maybe(0.5)
no
Или умножьте результат random
на 100, чтобы сравнить с int в диапазоне 0-100:
> function maybe(x) if 100 * math.random() < x then print(1) else print(0) end end
> maybe(50)
0
> maybe(10)
0
> maybe(99)
1
Еще одна альтернатива - передать верхний и нижний пределы на math.random
:
> function maybe(x) if math.random(0,100) < x then print(1) else print(0) end end
> maybe(0)
0
> maybe(100)
1