2014-06-29 27 views
1

是否支持從多項分佈取樣而無需更換? 我想象某種類似的代碼:使用斯卡拉和微風進行抽樣無需更換

import breeze.linalg._ 
import breeze.stats.distributions._ 


val params = DenseVector(0.1, 0.3, 0.2, 0.4) 
val mult = new Multinomial(params) 

val indices = (0 until 4).toArray 
val sampled_indices = mult.sample(n = 2, replacement = false) 
val other_indices = (indices.toSet.diff(sampled_indices.toSet)).toArray 

,其中最相關的位是「替代=假」傳遞給mult.sample參數()。 我想確保我採樣獨特的索引,並且我想這樣做,而不必爲每個抽籤定義一個新的多項分佈。或者如果有更好的方法來達到同樣的效果,我也很樂意聽到這個消息。

回答

1

沒有什麼內置的,對不起。你可以這樣做

(0 until 2).foldLeft(Seq.empty[Int])((seq, _) => mult.filter(!seq.contains(_)).draw :+ seq) 

真的是你想要的展開(或者,我想,已經做了你什麼上市的方法。如果你對GH文件中的問題,希望我們不久的某個時候得到它..

+0

當然,我是開源的新手,所以我不知道提交問題的慣例,它只是一個描述我想要的功能的消息嗎?或者我需要提出一個解決方案嗎? – sinwav

+0

只需提出該功能,理想情況下使用你想要的語法(基本上,你可以在這裏複製並粘貼你的問題,也許可以將「有......」的措辭改爲「我希望有」)。 。如果你對如何解決這個問題有一個想法,那很好,而且一個部分的解決方案會讓我更快地接受它。但絕對不是必需的。 – dlwh