在Netlogo

时间:2018-01-11 07:20:37

标签: range probability netlogo heading

我的问题包括两件事:

  1. 如何编码标题的4个不同范围

    • 一个。 315 - 45
    • 湾46 - 135
    • ℃。 136 - 225
    • d。 226- 314
  2. 2.如何编码选择此范围的概率。 (我已在下面附上图片以表明清楚)

    我想做的是:

    a)标题a;海龟选择任何此范围的概率应为85%

    b)对于标题b,c和b,将有5%的海龟选择此标题的任何一侧

    由于我在用语言解释时非常糟糕,所以我已将图像添加到我打算做的事情上

    Right-click and open in new tab

    这是我的代码

    to random-behave
    
      let p random-float 100
    
      if (p >= 85)
      [set  heading heading + 45
        set heading heading - 45]
    
      if (p >= 15)
       [set  heading other heading + 45
        set heading other heading - 45]
    
        if not can-move? 1 [ rt 180 ]
    
       fd 1
      ]
    end
    

    我尝试实施rnd extension,但我无法看到我应该把它放在哪里。如果可能的话,有没有办法根据其程度对标题进行编码,而不是if (p >=15)?由于other无法在此处使用。

    提前谢谢。

1 个答案:

答案 0 :(得分:4)

您不需要rnd扩展程序,您使用random-float的方法就可以了。但是,您需要使用if-else而非if,因为返回的随机数' p'即> 85也将> 15。相反,您需要将0到100之间的间隔分成适当长度的片段。这未经过测试。

to random-behave

  let p random-float 100

  if-else p <= 85
  [ print "got up to 85" ]
  [ if-else p <= 90
    [ print "got 85 to 90"]
    [ if-else p <= 95
      [ print "got 90 to 95" ]
      [ print "got 95 to 100" ]
    ]
  ]

  if not can-move? 1 [ rt 180 ]
  fd 1
end

您的heading计算中也存在错误。我只回答了概率部分,因为那是你特别要求的。但是,如果您需要有关heading的帮助,请提出新问题。