在netlogo中绘制随机beta分布

时间:2016-07-21 00:51:23

标签: random netlogo

我试图生成一个品种拥有的变量,该变量从Netlogo中的随机beta分布中提取它的值。

我找到了" bc"代码示例在线,但我正在努力使其适应我需要的。现在,为方便起见,我使用

从随机正态分布生成我的分布
create-breed 500
 [
  set target_factor random-normal 0.9 0.05
  if target_factor > 1 [set target_factor 0.9999999999]
  if target_Factor < 0.5 [set target_factor 0.5000000001]
 ]

所以基本上我想让一个能够取代&#34;随机正常0.9 0.05&#34;具有随机beta分布的部分

我到目前为止:

to-report random_beta
  set asocial_alpha 2
  set asocial_beta 2
  set asocial_min_eps 0
  set asocial_max_eps 0.25
  let x random-gamma asocial_alpha 1
  let asocial_eps (x / (x + random-gamma asocial_beta 1))
  set asocial_eps asocial_min_eps + (asocial_eps * (asocial_max_eps -   asocial_min_eps)) 
 foreach ( n-values 99 [ (? + 1) / 100 * (asocial_max_eps -     asocial_min_eps) + asocial_min_eps] ) 
  [report ? ( ((? - asocial_min_eps) ^ (asocial_alpha - 1) * (asocial_max_eps - ?) ^ (asocial_beta - 1)) / ( asocial_max_eps - asocial_min_eps ) ^ (asocial_alpha + asocial_beta - 1) )]
end

所有&#39;设置&#39;这里的变量是全局因素

老实说,我用数学方法从这个角度出发。如果有人可以帮我修复这个记者(或者如果一个程序工作也很好)。所以我的品种创建的最终代码是:

create-breed 500
 [
  set target_factor random-beta
  if target_factor > 1 [set target_factor 0.9999999999]
  if target_Factor < 0.5 [set target_factor 0.5000000001]
 ]

我会永远感激!!

2 个答案:

答案 0 :(得分:2)

rngs扩展提供随机beta分布(以及许多其他分布)。您可以在此处找到它:https://github.com/NetLogo/NetLogo/wiki/Extensions

查尔斯

答案 1 :(得分:1)

有人问我这个异地,因为rngs扩展名显然已经有一段时间没有更新了,并认为我也应该在这里发布。这是使用内置的伽马分布生成器绘制beta的代码。

to-report random-beta [ #alpha #beta ]
  let XX random-gamma #alpha 1
  let YY random-gamma #beta 1
  report XX / (XX + YY)
end