【问题标题】:netlogo 3D similar keyword to random-float in 2D?netlogo 3D 与 2D 中的 random-float 相似的关键字?
【发布时间】:2018-11-14 14:54:40
【问题描述】:

我目前正在为高中 CS 课的期末考试改编“生命游戏”的 3D 代码,我正在寻找一个类似于“random-float”的关键字,它具有相同的netlogo 中的效果。作为参考,这里是“random-float”关键字的netlogo手册链接:http://ccl.northwestern.edu/netlogo/docs/dict/random-float.html

如果有人能帮助我,将不胜感激。

【问题讨论】:

  • 我对这个问题有点困惑,因为它可能会询问 NetLogo 字典中的其他“随机”函数。您是要查找基于整数的随机数、具有不同概率分布的随机数还是允许您指定范围的随机数?
  • 那你有什么尝试?
  • 因此,在模型库中的原始“生命游戏”模型中,确定补丁密度的行之一,即“随机浮动”。我在 netlogo 字典中查找它,诚然,我并不完全理解它。我尝试按 3D 格式编写它,但它总是会以相同的密度创建补丁。我认为我正在寻找的是一个概率分布,以便它起作用。
  • 当您说创建补丁时,您指的是对它们进行着色或其他操作,使它们不可见?您能否添加最新版本的代码 sn-p 以创建具有不同密度的补丁?

标签: netlogo


【解决方案1】:

我认为您可以或多或少地将其直接转换为 3D,而无需使用其他原语 - random-floatrandom 仍然可以解决问题。本质上,在 2D 版本中,密度是通过让每个单元格随机绘制 0 到 100 之间的数字来确定的,并将其与 initial-density 滑块中的值进行比较。如果抽取的数字小于initial-density,则单元格“出生”。所以,你基本上可以在 3D 中做同样的事情——使用这个简化的设置:

to setup
  ca
  ask patches [ 
    ; if a random number between 0 and 100 is less than
    ; 5, become a "live" cell. Otherwise, become a dead cell.
    ifelse random-float 100 < 5 
    [ cell-birth ]
    [ cell-death ]   
  ]
  reset-ticks
end

to cell-birth
  set pcolor green
end

to cell-death
  set pcolor black
end

这给出了类似的东西:

因此,要改变密度,您只需修改 5(或添加一个滑块,就像在原始 2D 生活中所做的那样。如果我改为 50:

to setup
  ca
  ask patches [ 
    ifelse random-float 100 < 50 
    [ cell-birth ]
    [ cell-death ]   
  ]
  reset-ticks
end

我得到了一个更密集的 3D 世界:

希望对你有帮助!

【讨论】:

  • 非常感谢!它帮了很多忙。尝试了一会儿后,我意识到我使用的是大于,而不是小于,所以这是一个问题,但这完美无瑕!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-12-11
  • 1970-01-01
  • 2010-12-22
  • 2023-04-07
  • 2019-05-14
  • 2020-04-04
相关资源
最近更新 更多