2014-12-19 68 views
11

考慮兩個1-dim數組,其中一個具有可供選擇的項目,另一個包含繪製另一個列表項目的概率。如何從Julia的加權數組中選擇一個隨機項目?

items = ["a", 2, 5, "h", "hello", 3] 
weights = [0.1, 0.1, 0.2, 0.2, 0.1, 0.3] 

在利亞,如何可以使用一個到weights重量繪製的給定項目的概率隨機地選擇在items的項目?

+0

@Prix感謝您的更新。在這個問題的標題中註明興趣語言是否很重要?也許在問題結尾的括號中? – 2014-12-19 05:02:11

+0

好的,謝謝。事實上,能夠訂購標籤真是太棒了。 – 2014-12-19 05:09:09

+0

希望你喜歡這樣,我覺得沒有理由不在那裏,所以我想它歸結爲個人喜好;) – Prix 2014-12-19 05:15:24

回答

11

使用StatsBase.jl包,即

Pkg.add("StatsBase") # Only do this once, obviously 
using StatsBase 
items = ["a", 2, 5, "h", "hello", 3] 
weights = [0.1, 0.1, 0.2, 0.2, 0.1, 0.3] 
sample(items, WeightVec(weights)) 

或者,如果你想品嚐到許多:

# With replacement 
my_samps = sample(items, WeightVec(weights), 10) 
# Without replacement 
my_samps = sample(items, WeightVec(weights), 2, replace=false) 

您可以瞭解更多關於WeightVec,爲什麼它存在in the docsStatsBase中的採樣算法非常高效,可根據輸入的大小使用不同的方法。

相關問題