NetLogo:移动海龟的百分比

时间:2014-07-29 18:05:00

标签: netlogo

我在NetLogo中创建了1000只随机移动的海龟,但我希望只有30%的海龟向前迈进一步,而另外70%的海龟向前迈进五步。

to setup
  ca
  setup-turtles
  setup-patches
  reset-ticks
end

to go
  move-turtles
  tick
end

to setup-patches
  ask patches [set pcolor brown]
end

to setup-turtles
  create-turtles number
   ask turtles [set shape "person" set size 1] 
   ask turtles [setxy random-xcor random-ycor] ;; posicionar las personas en un punto al azar
end

to move-turtles
  ask turtles [
    right random 360]
end

1 个答案:

答案 0 :(得分:3)

解决这个问题的一个简单而快捷的方法是概率性地做到这一点:

ask turtles [ fd ifelse-value (random 100 <= 30) [ 1 ] [ 5 ] ]

...这样每只乌龟将以30%的概率移动一步,并以50%的概率移动五步。但它不能保证完全 30%的海龟移动一步。从长远来看,它平均只有30%。

如果你想要确切的数字,一种方法是:

let small-movers n-of (count turtles * 0.3) turtles
let big-movers turtles with [ not member? self small-movers ]
ask small-movers [ fd 1 ]
ask big-movers [ fd 5 ]

但由于member?检查,这会很慢。

更快的方法是使用乌龟变量。假设你有:

turtles-own [ step-size ]

然后你可以这样做:

ask turtles [ set step-size 5 ]
ask n-of (count turtles * 0.3) turtles [ set step-size 1 ]    
ask turtles [ fd step-size ]