【发布时间】:2020-05-05 18:35:21
【问题描述】:
假设我有一个 1-1000 的数字范围。 math.random(1,1000) 会给我获得每个数字的平等机会。而不是这个,我想制作一条分布曲线,使获得 1 的机会等于获得 1000 的机会,但获得 500 的机会更常见。我该怎么做呢?
【问题讨论】:
标签: math random lua numbers normal-distribution
假设我有一个 1-1000 的数字范围。 math.random(1,1000) 会给我获得每个数字的平等机会。而不是这个,我想制作一条分布曲线,使获得 1 的机会等于获得 1000 的机会,但获得 500 的机会更常见。我该怎么做呢?
【问题讨论】:
标签: math random lua numbers normal-distribution
function norm1000()
local x
repeat
x = math.ceil(math.log(1/math.random())^.5*math.cos(math.pi*math.random())*150+500)
until x >= 1 and x <= 1000
return x
end
【讨论】:
Where did you get the formula you're using - 这个公式被广泛使用,顺便说一句,这是一个很好的练习来证明它的数学正确性。 how closely does it approximate a normal distribution - 这取决于您系统上的 math.random() 质量。
math.stackexchange.com 上询问有关此公式的问题