试图让 10 只海龟中的 n 只从三只海龟中随机执行一个程序

Trying to ask n-of 10 turtles to do a random procedure out of a list of three

这就是我目前正在努力解决的问题。我是 netlogo 的新手,所以任何帮助都很好。这是对 'virus' 教程的修改。

          ifelse-value 
          choice = 0 [ go-quarantine ] 
          choice = 1 [ wear-mask     ] 
                     [ get-sick      ] ) ]

布兰登,欢迎您!是的,文档对此有点模糊。

  • 我认为您只需要“ifelse”来分支到某个操作,而不是 returns 一个值的“ifelse-value”。

  • 你需要在“ifelse”之前加一个“(”,否则它不会起作用。你有结尾的“)”。

  • 您不需要结束符“]”

  • “选择”不是必要的魔法词。您可以使用任何逻辑测试。

所以您正在寻找的命令将是这种模式,其中白色 space 在 NetLogo 中是灵活的,而“...”意味着零个或更多的东西可以去那里。我是守旧派,更喜欢在条件测试周围加上括号,但你不需要。

    (ifelse 
            ( test-1 ) [ actions 1 ...]
            ( test-2 ) [ actions 2 ...]
              ...
            ( test-n ) [ actions n ...]
               ;; else
                       [ default actions ]
    )

所以说这个人有 33.3% 的机会去每一种方式。 您可以按如下方式编写此模式的一个实例:

    let mood random 3  ;; returns integer values of 0, 1, or 2
    ( ifelse
              ( mood = 0 ) [ go-quarantine]
              ( mood = 1 ) [ wear-mask ]
                           [ get-sick ] 
    )

代码隐含地希望稍后定义这些操作:

  to go-quarantine [   do this ] end
  to wear-mask [  do that] end
  to get-sick  [  do other stuff ] end

并且不需要选择 0、1、2 等值并按顺序排列它们。