我在 netlogo 中错误地使用了 n-of 函数吗?
Am I using n-of function incorrectly in netlogo?
我正在创建一个代码,该代码应该使一定数量的海龟状态为 1,其余的状态为 0,该数字是使用界面中的滑块输入计算的。我一直在尝试让程序使用 n-of,但它将超过所需数量的海龟变成了 1 种(海龟从之前设置为状态 0)。
下面的代码(单人的开关是改成只有一只乌龟,翻滚的开关是用来模拟翻滚的运行):
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
问题出在 ask n-of
语句的位置。代码是 create-turtles N
之后的括号,为每个创建的海龟执行,所以 N 个创建的海龟中的每一个依次要求 n-of ... 海龟将状态设置为 1。你会得到更多乌龟比你想要的。将 if (tumble ...
块移出 create-turtles
块应该会导致它只执行一次,在所有 N 只海龟创建之后。
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
我正在创建一个代码,该代码应该使一定数量的海龟状态为 1,其余的状态为 0,该数字是使用界面中的滑块输入计算的。我一直在尝试让程序使用 n-of,但它将超过所需数量的海龟变成了 1 种(海龟从之前设置为状态 0)。
下面的代码(单人的开关是改成只有一只乌龟,翻滚的开关是用来模拟翻滚的运行):
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
问题出在 ask n-of
语句的位置。代码是 create-turtles N
之后的括号,为每个创建的海龟执行,所以 N 个创建的海龟中的每一个依次要求 n-of ... 海龟将状态设置为 1。你会得到更多乌龟比你想要的。将 if (tumble ...
块移出 create-turtles
块应该会导致它只执行一次,在所有 N 只海龟创建之后。
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