在 netlogo 中制作年龄分布

Making an age distribution in netlogo

我对编码很陌生,遇到了一些麻烦。我正在尝试根据每个年龄在 setup.I 的概率在 netlogo 中进行年龄分布设置一个随机数变量,我用它来帮助 probability.The 年龄概率如下:

天 |概率

  _0  ____0.476
 _365__    0.229
 _730    __0.142
_1095   _0.081
_1460    _0.044
_1825    _0.019
_2190   _0.007
_2555  _0.002

我还需要 2 pDogs 才能达到 2920 岁

这是我目前的情况,但我不确定是否有更好的方法。

    pDogs-own[family age health random-number]

    ask pDogs [
    set random-number random 1000.5]

    ask pDogs
    [if random-number <= 476 [set age 0]]
    ask pDogs
    [if ((random-number > 476) and (random-number <= 705)) [set age 365]] 
    ask pDogs
    [if ((random-number > 705) and (random-number <= 847)) [set age 730]]
    ask pDogs
    [if ((random-number > 847) and (random-number <= 928)) [set age 1095]]
    ask pDogs
    [if ((random-number > 928) and (random-number <= 972)) [set age 1460]]
    ask pDogs
    [if ((random-number > 972) and (random-number <= 991)) [set age 1825]]
    ask pDogs
    [if ((random-number > 991) and (random-number <= 998)) [set age 2190]]
    ask pDogs
    [if ((random-number > 998) and (random-number <= 1000)) [set age 2555]]

我也在尝试另一种方法来完成同样的事情。首先,我要求 2619 pDogs 的年龄 = 0。我正在尝试编写一个代码:

    ask n-of 2619 pDogs [
    set age 0]
    ask pDogs [
    if age != 0 [
    ask n-of 1262 pDogs [
    set age 365]]] 

...但它不是 working.I 最终想要的东西,我可以说,如果年龄不是先前定义的 0、365、730 等之一,请应用下一个 year/age值。

参见彩票示例。

或者使用 Payette 的 rnd 扩展: https://github.com/NetLogo/Rnd-Extension#readme

但是如果您想要确切的数字,正如您在最后所建议的那样,您将需要一种不同的方法。例如:

turtles-own [age]

to setup
  let _numbers [5 10 15 10 5]
  let _ages [0 1 2 3 4]
  (foreach _ages _numbers [
    let _age ?1
    crt ?2 [set age _age]
  ])
end