下面是一些非常基本的示例代码来说明问题。
case class randomizer(seed: Long){
def getRandom(): Double = {
//Other stuff
val rand = new util.Random(seed)
rand.nextDouble()
}
}
这将始终可靠地返回相同的第一个值。每次调用getRandom时都会。
然而,
case class randomizer(seed: Long){
val rand = new util.Random(seed)
def getRandom(): Double = {
//Other stuff
rand.nextDouble()
}
}
每次都会返回一个不同的随机值。
我怀疑这是因为通过每次重新初始化rand(如第一次),我们最终获得该种子的第一个数字。由于种子保证每次这是预期的行为,我们将获得相同的“随机数”集。通过将生成器移动到函数之外,只要类完成,它就会存在,结果继续在“set”中生成数字。这是考虑这个问题的正确方法吗?
答案 0 :(得分:0)
它不是" set"这是一个" stream",但是,那就是它。