我是否在netlogo中错误地使用了n-of函数?
我正在创建一个代码,它应该使一定数量的海龟的状态为1,其余海龟的状态为0,这个数字是使用界面的滑块输入计算出来的。我一直试图让程序使用n-of,但它将超过预期数量的海龟变成了1个品种(海龟从之前设置为0状态) 代码如下(单人开关改为仅一只海龟,翻滚开关用于建模翻滚和跑步):我是否在netlogo中错误地使用了n-of函数?,netlogo,Netlogo,我正在创建一个代码,它应该使一定数量的海龟的状态为1,其余海龟的状态为0,这个数字是使用界面的滑块输入计算出来的。我一直试图让程序使用n-of,但它将超过预期数量的海龟变成了1个品种(海龟从之前设置为0状态) 代码如下(单人开关改为仅一只海龟,翻滚开关用于建模翻滚和跑步): 问题在于ask n-of语句的位置。代码是为每个被创建的海龟执行的创建海龟N后的括号,因此每个被创建的海龟依次请求N-of。。。海龟将状态设置为1。你会得到比你想要的更多的海龟。将if(翻滚…块移出create turtle
问题在于
ask n-of
语句的位置。代码是为每个被创建的海龟执行的创建海龟N
后的括号,因此每个被创建的海龟依次请求N-of。。。海龟将状态设置为1。你会得到比你想要的更多的海龟。将if(翻滚…
块移出create turtles
块将导致在创建所有N个turtles之后只执行一次
to spawn
ifelse (single = false ) [
create-turtles N [
set color black
set xcor 0
set ycor 0
set heading random-float 360
set status 0
]
if (tumble = true) [
print (N * p1 / (p1 + p2))
ask n-of (N * p1 / (p1 + p2)) turtles [set status 1 set color red]
]
]
[create-turtles 1 [
set color black
set xcor 0
set ycor 0
set heading random-float 360
pendown
]
]
end
to spawn
ifelse (single = false ) [
create-turtles N [
set color black
set xcor 0
set ycor 0
set heading random-float 360
set status 0
]
if (tumble = true) [
print (N * p1 / (p1 + p2))
ask n-of (N * p1 / (p1 + p2)) turtles [set status 1 set color red]
]
]
[create-turtles 1 [
set color black
set xcor 0
set ycor 0
set heading random-float 360
pendown
]
]
end