如何在 scala Breeze 中初始化特定的随机种子,例如高斯分布?

问题描述 投票:0回答:2

如何在 scala 微风中使用特定种子强制随机数生成器(如果可能),所以说以下 scala 代码总是生成相同的序列

seq

    import breeze.stats.distributions._        
    val g = new Gaussian(0, 1)
    val seq = gau.sample(3)

我正在使用 scala 构建蒙特卡罗模拟器,并且希望模拟结果是可重复的(通过特定随机种子的参数化)。

scala scala-breeze
2个回答
1
投票

创建一个隐式 RandBasis 并将其线程连接到您创建随机生成器的任何位置。我可能应该为此改进 API,但类似:

implicit val randBasis: RandBasis = new RandBasis(new ThreadLocalRandomGenerator(new MersenneTwister(seed)))

0
投票

这里是微风 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)
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.