Netlogo 如何让一两只海龟(如果有的话)做一个动作?

Netlogo 如何让一两只海龟(如果有的话)做一个动作?,netlogo,Netlogo,下面的代码查找至少有一只雄性和一只雌性出现的所有斑块,然后在每个斑块上,有一只雌性孵化出随机性别的后代海龟 turtles-own [ gender] to setup ask patches [ sprout 1 [set size 0.2 set color pink set gender "female" ]] ask patches [ sprout 1 [set size 0.2 set color blue set gender "male"

下面的代码查找至少有一只雄性和一只雌性出现的所有斑块,然后在每个斑块上,有一只雌性孵化出随机性别的后代海龟

turtles-own [ gender] 
to setup 
ask patches [ 
sprout  1 
[set size 0.2 
set color pink 
set gender "female" 

]] 
ask patches [ 
sprout  1 
[set size 0.2 
 set color blue 
 set gender "male" 



]] 

reset-ticks 

end

to-report parents-here?  ;; patch procedure
report any? turtles-here with [gender = "male"]
     and
     any? turtles-here with [gender = "female"]
 end

to go
ask patches with [parents-here?] [
ask one-of turtles-here with [gender = "female"] [
  hatch 1 [
    set gender one-of ["male" "female"]
  ]
 ]
 ]
 tick
 end
我不想让一只雌性孵化,而是想问是否有一只雌性孵化“或者”如果有两只雌性孵化(最小一只,最大两只)。 我试着写它

ask n-of 2 turtles-here ............
但我有一个错误,说这个补丁只有一个海龟

我试图使用(但也有错误) 我也试着写作

ask n-of (1 + random 2 )
作为最小值和最大值,这也是错误的


提前感谢

这是我能想到的最简单的解决方案:

let females turtles-here with [gender = "female"]
ask n-of (min list 2 count females) females [
  hatch 1 [
    ...
  ]
]
为什么
最小列表2计数女性
?有点违反直觉,当您希望最大值为2时,您需要使用名为
min
的原语。但是
最小列表2…
的结果总是2或更小。或者,如果您按案例进行细分:

  • 如果
    计数女性
    为0,
    最小列表2计数女性
    也为0
  • 如果
    计数雌性
    为1,
    最小列表2计数雌性
    也为1
  • 如果
    计数女性
    为2或更多,
    最小列表2计数女性
    为2

如果我理解正确的话,这就是你想要的。

我没有理解你的意思,当然我不是有意要搞笑,但这是我写的标题,标题有什么不对吗???一切都很好。我很抱歉:)没问题,我想我的标题有些地方不对,因为我不是以英语为母语的人,所以我想有些地方不对。非常感谢你的回复。我尝试了(min 2 count),但我有一个错误(min期望此输入是一个列表,但得到了一个数字)。然后我搜索并找到(min-n-of),但也给出了一个错误。哎呀,更新了
min
需要一个列表,所以取两个数字中的min是
min list a b
而不仅仅是
min a b