根据条件从列表中选择一个项目
Pick an item from a list based on a condition
我有一个代理人列表,该列表由其邻居列表中的元素组成。我需要根据参数从中选择一个项目:参数 h 越高,选择该项目的可能性就越大。
选择我试过的项目:print one-of list
,其中列表包含从邻居 (set list lput item list
) 收集的所有项目。
但是,我不知道如何添加关于参数的条件。
我尝试使用 max (list item)
,但这没有考虑参数 h 的值(它可以取 1 到 10 之间的值)。
你能建议我如何考虑吗?
非常感谢
rnd 扩展正是您所需要的。将 extensions [rnd]
放在代码的顶部。然后使用 rnd:weighted-one-of-list
进行选择。这是一个完整的演示程序。把它放在一个空的 NetLogo 模型中,然后 运行 testme 过程几次。
extensions [rnd]
to testme
let mylist [1 3 5]
repeat 10
[ type rnd:weighted-one-of-list mylist [ [ii] -> ii ]
type " "
]
end
我有一个代理人列表,该列表由其邻居列表中的元素组成。我需要根据参数从中选择一个项目:参数 h 越高,选择该项目的可能性就越大。
选择我试过的项目:print one-of list
,其中列表包含从邻居 (set list lput item list
) 收集的所有项目。
但是,我不知道如何添加关于参数的条件。
我尝试使用 max (list item)
,但这没有考虑参数 h 的值(它可以取 1 到 10 之间的值)。
你能建议我如何考虑吗? 非常感谢
rnd 扩展正是您所需要的。将 extensions [rnd]
放在代码的顶部。然后使用 rnd:weighted-one-of-list
进行选择。这是一个完整的演示程序。把它放在一个空的 NetLogo 模型中,然后 运行 testme 过程几次。
extensions [rnd]
to testme
let mylist [1 3 5]
repeat 10
[ type rnd:weighted-one-of-list mylist [ [ii] -> ii ]
type " "
]
end