You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NetLogo如何结合rnd:weighted-one-of-list更新列表对应索引值?

实现方案

现有代码与需求

当前的初始定义代码:

要实现的逻辑:调用rnd扩展的rnd:weighted-one-of-list按给定权重抽取对应项,给startingcharact列表同索引位置的值加1,比如抽中第一项就给pricered加1。
之前尝试的写法会触发报错:

报错原因

rnd:weighted-one-of-list的返回值是权重列表里被抽中的单个子列表(比如抽中第一项返回[1 0.1]),原写法没有生成和原特征列表等长的、仅选中位置为1其余位置为0的掩码数组,直接拿单个值和长度为4的列表做map逐元运算,会触发参数长度/类型不匹配的错误。

可直接运行的正确写法

推荐用replace-item实现,逻辑清晰性能更好:

如果偏好map写法,也可以用逐元判断的方式实现:

注意:调用rnd:weighted-one-of-list时必须传入提取权重的reporter过程,也就是示例里的[pair -> last pair],作用是取每个权重子列表的第二个元素作为概率权重,漏写这部分也会触发语法报错。

内容的提问来源于stack exchange,提问作者Delu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 05:57:14