Revision Difference
math.random#511517
<function name="random" parent="math" type="libraryfunc">⤶
<description>⤶
When called without arguments, returns a uniform pseudo-random real number in the range 0 to 1 which includes 0 but excludes 1.⤶
⤶
When called with an integer number m, returns a uniform pseudo-random integer in the range 1 to m inclusive.⤶
⤶
When called with two integer numbers m and n, returns a uniform pseudo-random integer in the range m to n inclusive.⤶
⤶
See also <page>math.Rand</page>⤶
</description>⤶
<realm>Shared and Menu</realm>⤶
<args>⤶
<arg name="m" type="number" default="nil">If m is the only parameter: upper limit.&amp;lt;br /&amp;gt;
If n is also provided: lower limit.

If provided, this must be an integer.</arg>⤶
<arg name="n" type="number" default="nil">Upper limit.

If provided, this must be an integer.</arg>⤶
</args>⤶
<rets>⤶
<ret name="" type="number">Random value</ret>⤶
</rets>⤶
</function>⤶
⤶
<example>⤶
<description>Generate a random number between 1 and 400 with both math.random and math.Rand.</description>⤶
<code>⤶
print(math.random(1,400))⤶
⤶
print(math.Rand(1,400))⤶
</code>⤶
<outputfixedwidth>Fixed width</outputfixedwidth>⤶
<output>⤶
317⤶
1.0162317198768⤶
</output>⤶
⤶
</example>⤶
⤶
⤶
<example>⤶
<description>Select a random key from a table, where the keys have a different probability of being selected.</description>⤶
<code>⤶
function GetWeightedRandomKey(tab)⤶
local sum = 0⤶
⤶
for _, chance in pairs(tab) do⤶
sum = sum + chance⤶
end⤶
⤶
local select = math.random() * sum⤶
⤶
for key, chance in pairs(tab) do⤶
select = select - chance⤶
if select &lt; 0 then return key end⤶
end⤶
end⤶
⤶
-- Example usage:⤶
local fruit = {⤶
Grape = 4.5,⤶
Orange = 20,⤶
Banana = 3.14⤶
}⤶
⤶
for i = 1, 5 do⤶
print(GetWeightedRandomKey(fruit))⤶
end⤶
</code>⤶
<outputfixedwidth>Fixed width</outputfixedwidth>⤶
<output>⤶
Banana⤶
Grape⤶
Banana⤶
Orange⤶
Orange⤶
</output>⤶
⤶
</example>