Garry's Mod Wiki

Revision Difference

math.random#561721

<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. 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>⤶ ⤶ <br/>⤶ ⤶ ---⤶ ⤶ <br/>⤶ ⤶ <example name = 'Random in Range' >⤶ <description>⤶ ⤶ Generate a random number between 1 and 400 with both math.random and math.Rand.⤶ ⤶ </description>⤶ ⤶ <code>⤶ ⤶ print( 'Random Integer [ 1 , 400 ) :' , math.random( 1 , 400 ) )⤶ ⤶ </code>⤶ <output> ⤶ ```⤶ Random Integer [ 1 , 400 ) : 317⤶ ``` 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 ) ⤶ </output>⤶ ⤶ </example>⤶ ⤶ ⤶ <br/>⤶ ⤶ <example name = 'Random Table Key' >⤶ ⤶ <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 < 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> <output> ```⤶ </code> <output> ⤶ ```⤶ Banana Grape Banana Orange Orange ``` </output> </example></output> ⤶ </example>