Moduł:Matma

Z Nonsensopedii, polskiej encyklopedii humoru

local p = {}

-- zwraca losową liczbę
p.rand = function(f)
    local min = tonumber(f.args["min"])
    local max = tonumber(f.args["max"])
    local seed = f.args["seed"]
    if seed ~= nil or seed ~= "" then
        local n = tonumber(seed)
        if n ~= nil then math.randomseed(n) end
    else
        math.randomseed(os.time())
    end
    if min == nil then min = 0 end
    if max ~= nil then
        if min > max then min, max = max, min end
        return math.random(min, max)
    end
    return math.random()
end

-- Zwraca losowy element z przekazanej listy
-- Przyjmuje argumenty:
-- 1 - lista rzeczy do losowania, rozdzielona jakimś separatorem
-- 2 - separator, domyślnie #
p.chooseRandom = function(frame)
	return p._chooseRandom(frame.args[1] or '', frame.args[2] or '#')
end

-- To samo, ale do użycia w Lua
p._chooseRandom = function(text, sep)
	local split = mw.text.split(text, sep or '#', true)
	local valid = {}
	
	for i, v in ipairs(split) do 
		local s = mw.text.trim(v)
		if s ~= '' then
			table.insert(valid, s)
		end
	end
	
	if #valid == 0 then return '' end
	math.randomseed(os.time())
	return valid[math.random(#valid)]
end

return p