能否在NetLogo中生成取值0-1、均值0.5的正态分布?
关于NetLogo中生成0-1范围、均值0.5的正态分布随机数的问题解答
首先明确:不存在严格被限制在0-1范围内的正态分布。因为正态分布的数学性质是概率覆盖整个实数轴,哪怕标准差再小,理论上都有极小概率生成超出0或1的数值——只是这个概率可能低到可以忽略。
实际解决办法
近似限定范围(几乎不超出)
正态分布里,约99.7%的数据会落在「均值±3倍标准差」的区间内。如果要让这个区间刚好是0到1,那3倍标准差等于0.5(均值0.5到0、1的距离都是0.5),算下来标准差≈0.1667。用这个标准差的话,只有0.3%左右的概率会生成超出0-1的数值,大部分模拟场景里这个概率可以接受。
对应的NetLogo代码:ask patches [ set patch-quality random-normal 0.5 0.1667 ]严格限定范围(强制截断)
如果必须保证所有patch-quality都在0-1之间,可以在生成随机数后做截断处理,把小于0的数值设为0,大于1的设为1。这样既保留了近似正态分布的数值形态,又严格符合范围要求。
对应的NetLogo代码:ask patches [ let temp-val random-normal 0.5 0.1667 set patch-quality max (list 0 (min (list 1 temp-val))) ]
内容的提问来源于stack exchange,提问作者JoseNav
相关产品推荐
相关产品推荐

