netlogo - 未设置全局变量的代码如何不返回“nobody”?
问题描述
我有一个学生创建了一个名为随机补丁的全局变量和一个名为高程的补丁变量。然后他们使用高程随机选择一个补丁来设置随机补丁。问题是代码正在运行并选择补丁而不设置补丁变量高度。我知道它会自动设置为零,但这段代码通常不应该没有人提出吗?任何帮助理解这里的问题将不胜感激。
代码:
globals [ random-patch ]
patches-own [ elevation ]
to setup
ca
set random-patch one-of patches with [ elevation = (random 50) ]
;Also still reports a patch if only the pre to-setup code is entered and the
;following is entered on the interface observer console:
show one-of patches with [elevation = (random 50)]
解决方案
这实际上是一个非常微妙的错误。它没有返回的原因nobody
是因为它在从中选择之前构造了代理集。它所做的是独立测试每个补丁并为每个补丁绘制一个随机整数。以下代码将这两个步骤分开。
globals [ random-patch ]
patches-own [ elevation ]
to setup
clear-all
let zeros patches with [ elevation = (random 50) ]
type "Patches with zero: " print count zeros
set random-patch one-of zeros print random-patch
end
如果您使用标准设置,则有 1089 个补丁。1/50 的随机抽取将返回 0,因此 1/50 或大约 22 个补丁将满足条件并位于隐式构造的补丁集中。
将原始代码中的更改random 50
为random 100000
,您可能会得到nobody
. 如果您将抽签分开,它也将按您的预期运行(let roll random 50
那么set random-patch one-of patches with [ elevation = roll ]
推荐阅读
- javascript - 添加 NodeJS (a-color-picker) -> Uncaught Exception: ReferenceError HTML Element is not defined
- spring - 获取所有@PreAuthorize 列表
在春天 - javascript - 在 javascript 和 node.js 中播放音频块而不是完整文件
- powerbi - 过去 12 个月和未来 4 个月的 DAX
- blockchain - 为什么我总是得到“返回的值无效,它是否耗尽了 Gas”?
- c# - 在 Vscode 中调试 C# 代码时出现 System.TypeLoadException
- python - pip3 在 OpenSuse 42.3 中不工作 没有名为“_socket”的模块
- r - 创建一个 GUI 来加载文件夹中的所有文件做一些基本的分析和导出结果
- css - 如何更改 Flexbox-Item 的高度?
- javascript - 如何从标准输入包装 readline 以在管道中使用?