gpt4 book ai didi

scala - 随机掷骰子不是随机的

转载 作者:行者123 更新时间:2023-12-04 15:53:59 25 4
gpt4 key购买 nike

一个简单的新手问题,奇怪的是我无法想出解决方案。

我正在制作一个简单的掷骰子模拟器,以便我可以比较 nontransitive dice ,以及正常的,但问题是,如果我制作两个具有相同面数和所述面值的骰子,则两个骰子每次都会掷出相同的值。 (即每次掷出不同的数字,但两个骰子的值相同)

这是我的代码:

class Die(values: Int*) {
private val rand: util.Random = new util.Random(compat.Platform.currentTime)
private val high = values.size + 1
private val low = values(0)
def roll(): Int = rand.nextInt(high - low) + low
def this(vals: Range) = this(vals: _*)

def rollAndCompareTo(that: Die): Symbol = {
val a = this.roll()
val b = that.roll()
if(a > b) 'GT
else if (a < b) 'LT
else 'EQ
}
}

object Program extends App {
val d61 = new Die(1 to 6)
val d62 = new Die(1 to 6)

for(_ <- 1 to 100)
println(d61 rollAndCompareTo d62)
}

100% 的时间,程序只会打印 'EQ,因为这两个骰子尽管是在不同时间创建的不同实例,但始终掷出相同的值。

我也尝试过添加延迟,以便种子差异更大,但这也无济于事。

我该怎么做才能解决这个问题?

最佳答案

尝试为您的 Random 实例省略种子,或使用

new util.Random(System.currentTimeMillis)

如果您要在短时间内进行多次调用,则种子的特异性很重要。

关于scala - 随机掷骰子不是随机的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25295102/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com