netlogo 错误无法在长度为 x 的列表中找到元素 x
netlogo error cannot find element x in list of length x
下面的程序旨在 select 一只 "patron" 海龟中的一只 "patron" 并将它们的颜色更改为白色。 selection 是基于海龟财富的概率。
运行 这段代码,特别是行 item i ranking-in-radius
我收到类似这样的错误消息:“cannot find element 43 in list...(shows list of turtles' wealth)... which is only of length 43.
” 我知道我收到此错误是因为列表从 0 开始,因此 43 个元素的列表从 0 到 42,但我不明白为什么我编写的代码不正确。我的 i
从 0
开始,如果 i
不是 <
比查询的海龟数量(即应该在 42 停止)。谁能提出解决方案?谢谢!
to choose-patron
let i 0
let patrons-in-radius count turtles in-radius radius with [wealth >= 80]
let ranking-in-radius sort-by > [wealth] of turtles in-radius radius with [wealth >= 80]
let total-wealth-in-radius sum [wealth] of turtles in-radius radius with [wealth >= 80]
while [i < (patrons-in-radius)][
ask turtles in-radius radius with [wealth >= 80] [
if [wealth] of self = item i ranking-in-radius [
if random 100 < ((wealth / total-wealth-in-radius) * 100) [
set color white
if any? turtles in-radius radius with [color = white] [stop]
]
set i (i + 1)
]
]
]
end
您的 set i (i + 1)
似乎在错误的区块中。现在 i
每次你的 if [wealth]...
运行时都会增加,但你应该只在 while [i < (patrons-in-radius)]
块的末尾增加 i
。
尝试使用以下代码替换您的 while
语句:
while [ i < (patrons-in-radius) ] [
ask turtles in-radius radius with [ wealth >= 80 ] [
if [ wealth ] of self = item i ranking-in-radius [
if random 100 < ( (wealth / total-wealth-in-radius) * 100) [
set color white
if any? turtles in-radius radius with [color = white] [
stop
]
]
]
]
set i i + 1
]
下面的程序旨在 select 一只 "patron" 海龟中的一只 "patron" 并将它们的颜色更改为白色。 selection 是基于海龟财富的概率。
运行 这段代码,特别是行 item i ranking-in-radius
我收到类似这样的错误消息:“cannot find element 43 in list...(shows list of turtles' wealth)... which is only of length 43.
” 我知道我收到此错误是因为列表从 0 开始,因此 43 个元素的列表从 0 到 42,但我不明白为什么我编写的代码不正确。我的 i
从 0
开始,如果 i
不是 <
比查询的海龟数量(即应该在 42 停止)。谁能提出解决方案?谢谢!
to choose-patron
let i 0
let patrons-in-radius count turtles in-radius radius with [wealth >= 80]
let ranking-in-radius sort-by > [wealth] of turtles in-radius radius with [wealth >= 80]
let total-wealth-in-radius sum [wealth] of turtles in-radius radius with [wealth >= 80]
while [i < (patrons-in-radius)][
ask turtles in-radius radius with [wealth >= 80] [
if [wealth] of self = item i ranking-in-radius [
if random 100 < ((wealth / total-wealth-in-radius) * 100) [
set color white
if any? turtles in-radius radius with [color = white] [stop]
]
set i (i + 1)
]
]
]
end
您的 set i (i + 1)
似乎在错误的区块中。现在 i
每次你的 if [wealth]...
运行时都会增加,但你应该只在 while [i < (patrons-in-radius)]
块的末尾增加 i
。
尝试使用以下代码替换您的 while
语句:
while [ i < (patrons-in-radius) ] [
ask turtles in-radius radius with [ wealth >= 80 ] [
if [ wealth ] of self = item i ranking-in-radius [
if random 100 < ( (wealth / total-wealth-in-radius) * 100) [
set color white
if any? turtles in-radius radius with [color = white] [
stop
]
]
]
]
set i i + 1
]