随机找几只乌龟做一件事



我有两个处理海龟的过程,但我需要随机数量的海龟来执行其中一个过程,而另一个随机数量的海龟来执行相同部分的另一个过程。

假设我有一个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只乌龟将随机执行这两个过程中的任何一个,但没有一只乌龟同时执行这两个过程。

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

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

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

对于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

注意:这些代码都没有经过测试,所以如果它抛出错误,请注释(或编辑)。

相关内容

  • 没有找到相关文章

最新更新