作为设置过程的一部分,我尝试使用滑块设置将显示的贴片密度并指定随机值。接口上的滑块用于密度范围0到100,并且使用接口上的输入设置补丁的随机值。这通常会在区域中设置为4.因此,如果设置了50%,则该过程将使用随机值分配50%的补丁。
当我这样做时,我收到以下错误:“预期命令”和代码中突出显示变量'error-count'。
;; The density of patches to be set with a random value is set using variable init-errors on interface.
;; Every patch uses a task which reports a random value.
;; The random value is set using variable error-count on interface
to setup-random
ask patches [
if (random-float 100.0) < init-errors
[setup task random error-count]
]
end
答案 0 :(得分:1)
您需要更改:
setup task random error-count
到
setup task [ random error-count ]
任何时候任务主体不仅仅是一个原语(&#34;简洁的任务语法&#34;),它需要用方括号括起来。您正在获取的错误消息是因为task random
是有效的语法; NetLogo将其解释为task [ random ? ]
的缩写。然后它不知道如何处理以下error-count
,因此错误。
答案 1 :(得分:0)
我不完全清楚你正在使用的任务语法(特别是为什么setup
位于该行的开头)或者为什么你想在这里使用任务 - 但这可能是一个区别编码风格。但NetLogo编译器让你知道它希望在单词random之后有一个命令,但得到一个值。由于随机确实需要一个值,我认为这与设置和任务元素有关。这是另一种做你想做的事情的方式,这可能更容易。我还将非零错误补丁变为绿色,以便您可以看到它们。此代码假定您在问题描述中定义了两个滑块。
patches-own [errors]
to setup-random
ask patches [
if (random-float 100.0) < init-errors
[ set errors random error-count
set pcolor green ]
]
end