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