Lua:如何计算在 50 到 500 之间平均结果为 100 的随机数?

我认为这是对数正态分布?不是很确定。我用 Lua 写了以下代码:

local min = 50
local max = 500
local avg = 100
local fFloat = ( RandomInt( 0, avg ) / 100 ) ^ 2 -- 在0和1之间的浮点数,平方
local iRange = max - min -- 最小值和最大值的范围
local fDistribution = ( ( fFloat * iRange ) + min ) / 100
finalRandPerc = fDistribution * RandomInt( min, max ) / 100

它接近工作,但有时会生成稍微有些过大的数字。

原文链接 https://stackoverflow.com/questions/69590902

点赞
stackoverflow用户786351
stackoverflow用户786351

这可以用无数种方法来完成。另一种方法是通过二项分布生成一个数字,乘以450再加上50。我会留下找到二项分布的正确参数的任务给你。

2021-10-15 21:46:44
stackoverflow用户1847592
stackoverflow用户1847592

如何计算一个在50到500之间的随机数,其平均结果为100?

你可以使用去掉尾部的4度自由度卡方分布。

这非常容易计算。

local function random_50_500()
   -- 结果在50到500之间
   -- 平均值非常接近100
   local x
   repeat
      x = math.log(math.random()) + math.log(math.random())
   until x > -18
   return x * -25 + 50
end
2021-10-27 13:59:49