以下代码查找存在至少一个男性和一个女性的所有补丁,然后在每个补丁上,有一个雌性孵化,一个随机性别的后代乌龟。
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 ............
但我有一个错误说这个补丁只有1只来自海龟
我试图使用(但也有错误) 我也试着写
ask n-of (1 + random 2 )
作为最小值和最大值,也是错误的。
提前谢谢
答案 0 :(得分:3)
这是我能想到的最简单的解决方案:
let females turtles-here with [gender = "female"]
ask n-of (min list 2 count females) females [
hatch 1 [
...
]
]
为什么min list 2 count females
?当你想要最多2个时,你需要使用一个名为min
的原语,这有点违反直觉。但min list 2 ...
的结果总是2或更小。或者,如果你按案例分解:
count females
为0,则min list 2 count females
也为0. count females
为1,min list 2 count females
也为1。count females
为2或更高,min list 2 count females
为2。如果我理解正确的话,那就是你想要的。