试图让 10 只海龟中的 n 只从三个海龟列表中随机抽取一个

时间:2021-04-14 00:09:26

标签: netlogo choice virus

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

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

1 个答案:

答案 0 :(得分:1)

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

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

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

  • 你不需要结束“]”

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

因此,您要查找的命令将是这种模式,其中 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 等值并将它们按该顺序排列。