如何在 scala 微风中使用特定种子强制随机数生成器(如果可能),所以说以下 scala 代码总是生成相同的序列
seq
?
import breeze.stats.distributions._
val g = new Gaussian(0, 1)
val seq = gau.sample(3)
我正在使用 scala 构建蒙特卡罗模拟器,并且希望模拟结果是可重复的(通过特定随机种子的参数化)。
创建一个隐式 RandBasis 并将其线程连接到您创建随机生成器的任何位置。我可能应该为此改进 API,但类似:
implicit val randBasis: RandBasis = new RandBasis(new ThreadLocalRandomGenerator(new MersenneTwister(seed)))
这里是微风 DenseMatrix 和 DenseVector 播种的可编译代码:
import breeze.linalg._
import breeze.stats.distributions._
import org.apache.commons.math3.random.MersenneTwister
object RandomSeedExample {
def main(args: Array[String]): Unit = {
val seed = 0
val randBasis = new RandBasis(new ThreadLocalRandomGenerator(new MersenneTwister(seed))).uniform
val denseVector = DenseVector.rand(5, randBasis)
println(denseVector)
}
}