如何在NetLogo中实现反向指数分布的patch-quality生成?
在NetLogo中实现反向指数分布生成patch-quality
核心思路:场景1用均值0.13的指数分布生成大量接近0的数值,要得到多数接近1的反向分布,只需对场景1的结果做反向变换——用
1减去场景1生成的指数分布值。同时要注意指数分布可能生成大于1的数,需截断处理保证结果落在0-1区间内。完整实现代码:
ask patches [ if (patch-quality-distribution = "scenario-1") [ let temp-value random-exponential 0.13 ; 截断超过1的数值,确保patch-quality在0-1范围内 set patch-quality min (list temp-value 1) ] if (patch-quality-distribution = "scenario-2") [ let temp-value random-exponential 0.13 ; 先截断,再反向得到集中于1附近的分布 set patch-quality 1 - min (list temp-value 1) ] ]
- 逻辑说明:
- 场景1中,
random-exponential 0.13生成的数值天然集中在0附近,截断操作避免了极小概率出现的大于1的数值破坏取值范围; - 场景2通过
1 - 场景1的数值,将原分布中接近0的数值映射为接近1的数值,完美复刻了场景1的“多数值集中在一端”的分布特征,只是方向相反。
- 场景1中,
内容的提问来源于stack exchange,提问作者JoseNav
相关产品推荐
相关产品推荐

