问随机数量的乌龟做点什么?

时间:2015-09-01 03:37:30

标签: random netlogo procedures

我有两个龟的程序,但我需要一个随机数量的龟来做一个程序和另一些随机龟来做相同部分的其他程序。

假设我有40只海龟,我有以下程序:

to move
 ask turtles [
 rt random-float 90 - random-float 90
 fd 1
 ]
end

 to bounce 
ask turtles 
[
if [pcolor] of patch-at dx 400 = white [
  set heading (- heading)
 ]
 if [pcolor] of patch-at 400 dy = white [
  set heading (180 - heading)
]
]
end 

我想做的是让20只随机海龟做“反弹”程序,其他20只随机海龟做“移动”程序。或者40只乌龟将随机进行2个程序中的任何一个,但没有任何乌龟同时进行2个程序。

我知道这有点难,但我认为可以做到。有什么建议吗?

2 个答案:

答案 0 :(得分:2)

这是我能想到的最简单的方法:

let bouncers n-of 20 turtles
ask turtles [
  ifelse member? self bouncers
    [ bounce ]
    [ move ]
]

答案 1 :(得分:2)

random number of turtles这个短语有很多解释。 Seth的方法允许您精确控制两个程序中每个程序的海龟数量。也就是说,固定数量的随机龟。

如果你希望它总是大约但不一定等于某些比例的海龟(下例中为0.4),那么每只乌龟随机决定给定概率,那么你可以这样做:

ask turtles [
ifelse-value random-float 1 < 0.4
    [ bounce ]
    [ move ]
]

如果您希望海龟的数量是随机的,那么您可以将Seth代码的第一行更改为:

let bouncers n-of (1 + random count turtles) turtles

注意:此代码均未经过测试,因此请注释(或编辑)是否会引发错误。