NetLogo:随机分配海龟,但同样分配给不同的群组

时间:2018-05-26 10:47:28

标签: random netlogo

我使用下面的代码创建50只海龟并随机将它们分配给四种不同的策略之一(即a,b,c和d):

问题在于,当我减少创建的海龟的数量或增加策略的数量时,我面临的情况是,任何海龟都不会采取至少一种策略。

turtles-own [ my_strategy ]

to setup
  ;; create 50 turtles and assign them randomly
  ;; to one of four different strategies
  create-turtles 50 [
    set my_strategy one-of [ "a" "b" "c" "d" ]
  ]
end

我需要你的帮助: 1.确保我没有面临任何乌龟没有采取一种或多种策略的情况。 2.确保分配给每个策略的海龟数量大致相等。

我尝试使用下面的代码来解决问题,但它不起作用:

turtles-own [ my_strategy ]

to setup
  let strategies [ "a" "b" "c" "d" ]
  let turtles-num 51
  let i 0

  create-turtles turtles-num 

  while [ not any? turtles with [  my_strategy = 0 ] ] [
    ifelse i < length strategies - 1 [ set i i + 1 ] [ set i 0 ]
    ask n-of ceiling  ( turtles-num / length strategies ) turtles with [ my_strategy = 0 ] [
      set my_strategy item i strategies
    ]
  ]

感谢您的帮助。

1 个答案:

答案 0 :(得分:3)

通常,您不应该在NetLogo中使用who个数字。但是,这是适合的极少数情况之一。

根据评论,您实际上希望每组中的数字相等(或尽可能接近相等),因此您不需要计算每组中的数字。创建turtles时,会使用连续的who数字创建它们。因此,您可以使用mod运算符依次将它们分配给每个策略。

turtles-own [ my_strategy ]

to setup
  ;; create 50 turtles and assign them equally
  ;; to one of four different strategies
  create-turtles 50 [
    set my_strategy item (who mod 4) [ "a" "b" "c" "d" ]
  ]
end