LUA 中的正态分布曲线和随机数

所以我有数字范围 1-1000。math.random(1,1000) 会给我获得每个数字的相等几率。但是我想要制作一个分布曲线,使得获得1的几率等于获得1000的几率,但获得500的几率要更普遍。我该如何做到这一点?

点赞
用户1847592
用户1847592
# 将下面翻译成中文并且保留原本的 markdown 格式

## Lua 代码

```lua
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

这是一个 Lua 函数,名为 norm1000(),其作用是随机生成一个范围在 1 到 1000 之间的整数。

函数内部使用了 Lua 自带的数学函数 math.log()math.random()math.cos() 等。

其中最核心的部分是一个循环语句,通过不断随机生成数值并计算再验证,保证最后的结果在目标范围内。

2020-01-19 22:02:20