Module:Random: Difference between revisions

From MuttWiki
Jump to navigationJump to search
No edit summary
No edit summary
Line 3: Line 3:
local function setseed()
local function setseed()
math.randomseed(math.floor(os.time() / 3600))
math.randomseed(math.floor(os.time() / 3600))
end
local function fixArray(tab)
local out = {}
for k,v in pairs(tab) do
table.insert(out, k, v)
end
return out
end
end


function p.num(frame)
function p.num(frame)
setseed()
setseed()
if #frame.args == 0 then
local args = fixArray(frame.args)
if #args == 0 then
return math.random()
return math.random()
elseif #frame.args == 1 then
elseif #args == 1 then
return math.random(tonumber(frame.args[1]))
return math.random(tonumber(frame.args[1]))
elseif #frame.args >= 2 then
elseif #args >= 2 then
local _min = tonumber(frame.args[1])
local _min = tonumber(frame.args[1])
local _max = tonumber(frame.args[2])
local _max = tonumber(frame.args[2])
Line 22: Line 31:
function p.pick(frame)
function p.pick(frame)
setseed()
setseed()
--return frame.args[math.random(#frame.args)]
local args = fixArray(frame.args)
return #frame.args
return args[math.random(#args)]
end
end


return p
return p

Revision as of 04:29, 22 February 2025

Documentation for this module may be created at Module:Random/doc

local p = {}

local function setseed()
	math.randomseed(math.floor(os.time() / 3600))
end

local function fixArray(tab)
	local out = {}
	for k,v in pairs(tab) do
		table.insert(out, k, v)
	end
	return out
end

function p.num(frame)
	setseed()
	local args = fixArray(frame.args)
	if #args == 0 then
		return math.random()
	elseif #args == 1 then
		return math.random(tonumber(frame.args[1]))
	elseif #args >= 2 then
		local _min = tonumber(frame.args[1])
		local _max = tonumber(frame.args[2])
	end
	if _min > _max then
		_min, _max = _max, _min
	end
end

function p.pick(frame)
	setseed()
	local args = fixArray(frame.args)
	return args[math.random(#args)]
end

return p