根据条件从列表中选择一个项目

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