Add table.shuffle (#8299)
parent
2b3490db1f
commit
ea5e231959
|
@ -576,6 +576,20 @@ function table.key_value_swap(t)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
function table.shuffle(t, from, to, random)
|
||||||
|
from = from or 1
|
||||||
|
to = to or #t
|
||||||
|
random = random or math.random
|
||||||
|
local n = to - from + 1
|
||||||
|
while n > 1 do
|
||||||
|
local r = from + n-1
|
||||||
|
local l = from + random(0, n-1)
|
||||||
|
t[l], t[r] = t[r], t[l]
|
||||||
|
n = n-1
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
-- mainmenu only functions
|
-- mainmenu only functions
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
|
|
|
@ -2925,6 +2925,13 @@ Helper functions
|
||||||
find new indices.
|
find new indices.
|
||||||
* `table.key_value_swap(t)`: returns a table with keys and values swapped
|
* `table.key_value_swap(t)`: returns a table with keys and values swapped
|
||||||
* If multiple keys in `t` map to the same value, the result is undefined.
|
* If multiple keys in `t` map to the same value, the result is undefined.
|
||||||
|
* `table.shuffle(table, [from], [to], [random_func])`:
|
||||||
|
* Shuffles elements `from` to `to` in `table` in place
|
||||||
|
* `from` defaults to `1`
|
||||||
|
* `to` defaults to `#table`
|
||||||
|
* `random_func` defaults to `math.random`. This function receives two
|
||||||
|
integers as arguments and should return a random integer inclusively
|
||||||
|
between them.
|
||||||
* `minetest.pointed_thing_to_face_pos(placer, pointed_thing)`: returns a
|
* `minetest.pointed_thing_to_face_pos(placer, pointed_thing)`: returns a
|
||||||
position.
|
position.
|
||||||
* returns the exact position on the surface of a pointed node
|
* returns the exact position on the surface of a pointed node
|
||||||
|
|
Loading…
Reference in New Issue