Random 不同概率的Netlogo随机抽样

Random 不同概率的Netlogo随机抽样,random,netlogo,Random,Netlogo,NetLogo中是否有一种方法可以关联数组中每个项目的概率值并随机选择n个项目?下面是一个函数 let names ["pooh", "rabbit", "piglet", "Christopher"] let probs [0.5, 0.1, 0.1, 0.3] n-random-select 5 names probs >>["pooh", "pooh", "pooh", "Christopher", "piglet"] 在Python中,numpy.random.choic

NetLogo中是否有一种方法可以关联数组中每个项目的概率值并随机选择n个项目?下面是一个函数

let names ["pooh", "rabbit", "piglet", "Christopher"]
let probs [0.5, 0.1, 0.1, 0.3]
n-random-select 5 names probs

>>["pooh", "pooh", "pooh", "Christopher", "piglet"]

在Python中,
numpy.random.choice
就是这样做的

这正是内置的
rnd
扩展的功能:

是您想要的基本体。使用
numpy.random.choice
更灵活一些,但也更麻烦一些。您可以这样编写
n-random-select

to-report n-random-select [ n xs weights ]
  report map first rnd:weighted-n-of-list-with-repeats n (map list xs weights) last
end
并像这样使用它(记住,netlogo列表中没有逗号):

observer> show n-random-select 5 ["pooh" "rabbit" "piglet" "Christopher"] [0.5 0.1 0.1 0.3]
observer: ["pooh" "pooh" "pooh" "Christopher" "Christopher"]
observer> show n-random-select 5 ["pooh" "rabbit" "piglet" "Christopher"] [0.5 0.1 0.1 0.3]
observer: ["pooh" "Christopher" "Christopher" "Christopher" "Christopher"]
observer> show n-random-select 5 ["pooh" "rabbit" "piglet" "Christopher"] [0.5 0.1 0.1 0.3]
observer: ["rabbit" "rabbit" "rabbit" "piglet" "Christopher"]