rspamd/test/lua/pcall_test.lua
2018-08-20 10:27:12 +01:00

46 lines
983 B
Lua
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

--[[ https://en.wikipedia.org/wiki/Normal_distribution ]]
-- The BoxMuller method
local function gaussian(mean, variance)
local U = math.random()
local V = math.random()
return math.sqrt(-2.0 * variance * math.log(U)) *
math.cos(2.0 * math.pi * V) + mean
end
local function mean(t)
local sum = 0
local count = #t
for i = 1, count do
sum = sum + t[i]
end
return sum / count
end
local function std(t, mean)
local squares = 0.0
for i = 1, #t do
local deviation = math.abs(mean - t[i])
squares = squares + deviation * deviation
end
local variance = squares / #t
return math.sqrt(variance)
end
local function do_the_call()
local t = {}
local mu = 34.0
local sigma = 10.0
for i = 1, 5 do
table.insert(t, gaussian(mu, sigma))
end
return string.format("Got mean: %1.5f, mu: %1.5f\nstd deviance:%1.5f, expected: %1.5f",
mean(t), mu,
std(t, mu), math.sqrt(sigma))
end
math.randomseed(os.time())
return do_the_call