在 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
我对编码很陌生,遇到了一些麻烦。我正在尝试根据每个年龄在 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