我正在为我在微风的有关分布的文档中看到的一个示例而摸不着头脑。
创建 Rand 实例后,它们表明您可以执行以下操作:
import breeze.stats.distributions._
val pois = new Poisson(3.0);
val doublePoi: Rand[Double] = for(x <- pois) yield x.toDouble
现在,这很酷,我可以得到一个 Rand 对象,Double
而不是Int
在调用samples
方法时得到。另一个例子可能是:
val abc = ('a' to 'z').map(_.toString).toArray
val letterDist: Rand[String] = for(x <- pois) yield {
val i = if (x > 26) x % 26 else x
abc(i)
}
val lettersSamp = letterDist.samples.take(20)
println(letterSamp)
问题是,这里发生了什么?Rand[T]
不是一个集合,到目前为止我看到的所有 for/yield 示例都适用于集合。scala 文档没有提及太多,我发现的唯一一件事就是在这里翻译 for-comprehensions 。这里的基本规则是什么?这还能如何使用(不一定是轻而易举的相关答案)