首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >求出所有海龟死亡时的平均年龄

问求出所有海龟死亡时的平均年龄
EN

Stack Overflow用户
提问于 2018-03-19 10:00:30
回答 1查看 196关注 0票数 1

我想知道所有濒临死亡的海龟的平均年龄。我试图通过以下代码片段来实现这一点:

代码语言:javascript
复制
globals [mean-death-age]
turtles-own [age prob-die?]

to-report mean-age
  if (prob-die? = true) [
    set mean-death-age mean [age] of turtles
  ]
  report mean-death-age
end

每只海龟都有死亡的可能性(死亡?)它应该用每一个时间步骤(滴答)来计算。如果死了呢?被设置为真正的平均死亡年龄应该被更新。现在我有个问题

  • 我不知道怎么开始这个可变的平均死亡年龄。也许,使用if循环会有所帮助。 如果(蜱>= 1) [如果(假死亡?=真)[设定平均死亡年龄-海龟的平均年龄]]
  • 我没有得到已经计算过的平均死亡年龄的更新,但是变量被覆盖了,并且返回了这种蜱虫海龟的平均死亡年龄。
  • 我在获取价值方面有困难。当我试着叫它的时候。 印刷平均年龄 我得到的错误信息是,平均年龄是海龟-即使我试图保存是一个全局变量。

整个代码都是可用的这里。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-19 11:47:38

我觉得你让事情变得更复杂了。最简单的方法是只列出海龟死亡的年龄,然后取其平均值:

代码语言:javascript
复制
globals [death-ages]
turtles-own [age]

to setup
  clear-all
  create-turtles 100 [
    setxy random-xcor random-ycor
    set age random 100
  ]
  set death-ages [] ; start with an empty list
  reset-ticks
end

to go
  if not any? turtles [ stop ]
  ask turtles [
    if random 100 < age [
      set death-ages lput age death-ages ; add age to our list of ages of death
      die
    ]
  ]
  print mean death-ages
  tick
end

唯一的缺点是,随着模型的运行,death-ages列表将继续增长。如果这是一个问题(尽管它可能不会),您将需要跟踪当前的平均值和当前的观测计数,并使用类似于set avg ((n * avg) + age) / (n + 1) set n n + 1的内容更新平均值。

至于为什么您的当前代码不能工作,需要做大量的解压来解释这一切(对不起,我现在不能)。作为一般性评论,我建议在遇到这样的困难时尽量后退一步,并考虑解决问题所需的最小信息量。在这种情况下,你需要平均死亡年龄。最简单的方法是什么?保存一张死亡年龄的清单,并在需要时取其平均值。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49360142

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档