2

是否支持从多项分布中抽样而不进行替换?我在想象某种代码,例如:

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() 的“replacement = false”参数。我想确保我对唯一索引进行采样,并且我想这样做而不为每次抽签定义一个新的多项分布。

或者,如果有更好的方法来实现相同的结果,我也很高兴听到这个消息。

4

1 回答 1

1

没有内置任何东西,对不起。你可以做类似的事情

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

真的你想要一个展开(或者,我猜,一种方法,做你列出的。如果你在 GH 上提出问题,希望我们很快就会解决它......

于 2014-06-29T04:06:55.217 回答