Difference between revisions of "love.math.random"

m (The func is no longer in seeded at the top of love.run)
(Examples)
 
(4 intermediate revisions by 2 users not shown)
Line 1: Line 1:
 
{{newin|[[0.9.0]]|090|type=function}}
 
{{newin|[[0.9.0]]|090|type=function}}
 
Generates a pseudo-random number in a platform independent manner. This function is seeded at startup, so you generally don't need to seed it yourself.
 
Generates a pseudo-random number in a platform independent manner. This function is seeded at startup, so you generally don't need to seed it yourself.
 +
{{notice|Neither this function, [[RandomGenerator]], nor Lua [https://www.lua.org/manual/5.1/manual.html#pdf-math.random math.random] generates truly random number, thus it's unsuitable for cryptographic usage!}}
  
 
== Function ==
 
== Function ==
Get uniformly distributed pseudo-random real number within [0, 1].
+
Get uniformly distributed pseudo-random '''real''' number between 0 inclusive to 1 exclusive.
  
 
=== Synopsis ===
 
=== Synopsis ===
Line 15: Line 16:
  
 
== Function ==
 
== Function ==
Get a uniformly distributed pseudo-random integer within [1, max].
+
Get a uniformly distributed pseudo-random '''integer''' between 1 inclusive to <code>max</code> inclusive.
 
=== Synopsis ===
 
=== Synopsis ===
 
<source lang="lua">
 
<source lang="lua">
Line 25: Line 26:
 
{{param|number|number|The pseudo-random integer number.}}
 
{{param|number|number|The pseudo-random integer number.}}
 
== Function ==
 
== Function ==
Get uniformly distributed pseudo-random integer within [min, max].
+
Get uniformly distributed pseudo-random '''integer''' between <code>min</code> inclusive to <code>max</code> inclusive.
 
=== Synopsis ===
 
=== Synopsis ===
 
<source lang="lua">
 
<source lang="lua">
Line 43: Line 44:
 
end
 
end
 
</source>
 
</source>
 +
 +
Generate a random permutation of list:
 +
<source lang="lua">
 +
function shuffle (list)
 +
-- backward iteration from last to second element:
 +
for i = #list, 2, -1 do
 +
-- choose one of elements:
 +
local j = love.math.random(i) -- between 1 to i (both inclusive)
 +
-- replace both elements each other:
 +
list[i], list[j] = list[j], list[i]
 +
end
 +
end
 +
</source>
 +
 +
== Notes ==
 +
When using the 2nd and 3rd variant, numbers passed will be rounded, thus, <code>love.math.random(0, 76.767)</code> may return 77
  
 
== See Also ==
 
== See Also ==

Latest revision as of 12:24, 23 March 2023

Available since LÖVE 0.9.0
This function is not supported in earlier versions.

Generates a pseudo-random number in a platform independent manner. This function is seeded at startup, so you generally don't need to seed it yourself.

O.png Neither this function, RandomGenerator, nor Lua math.random generates truly random number, thus it's unsuitable for cryptographic usage!  


Function

Get uniformly distributed pseudo-random real number between 0 inclusive to 1 exclusive.

Synopsis

number = love.math.random( )

Arguments

None.

Returns

number number
The pseudo-random number.

Function

Get a uniformly distributed pseudo-random integer between 1 inclusive to max inclusive.

Synopsis

number = love.math.random( max )

Arguments

number max
The maximum possible value it should return.

Returns

number number
The pseudo-random integer number.

Function

Get uniformly distributed pseudo-random integer between min inclusive to max inclusive.

Synopsis

number = love.math.random( min, max )

Arguments

number min
The minimum possible value it should return.
number max
The maximum possible value it should return.

Returns

number number
The pseudo-random integer number.

Examples

Generates a number between 1 and 100 (both inclusive).

function love.load()
    randomNumber = love.math.random(1, 100)
end

Generate a random permutation of list:

function shuffle (list)
	-- backward iteration from last to second element:
	for i = #list, 2, -1 do
		-- choose one of elements:
		local j = love.math.random(i) -- between 1 to i (both inclusive)
		-- replace both elements each other:
		list[i], list[j] = list[j], list[i]
	end
end

Notes

When using the 2nd and 3rd variant, numbers passed will be rounded, thus, love.math.random(0, 76.767) may return 77

See Also


Other Languages