有没有一种方法允许我根据一些百分比生成一个布尔值?
例如,我需要一个有25%的机会给我假的发电机。
现在我正在做:
val rand = new Random()
val a = List(true,true,true,false)
val isFailure = a(rand.nextInt(4))
我这样做是为了让我的“25%”失败的可能性,但我不确定这是否是正确的方法,我相信有更好的方法。
有人可以指导我去哪里看或怎么做?
答案 0 :(得分:20)
此:
math.random < 0.25
将以0.25概率产生真。
答案 1 :(得分:3)
这样做的一个很好的方法是将它包装在像这样的流中:
scala> def booleanStream(p : Double) : Stream[Boolean] = (math.random < p) #:: booleanStream(p)
booleanStream: (p: Double)Stream[Boolean]
scala> booleanStream(0.25) take 25 foreach println
false
false
false
true
false
false
true
false
false
false
true
false
false
false
false
false
false
false
false
false
false
false
false
false
false
然后你可以在需要时读取低于阈值概率的值......如果你想对输出做任何理解,那就好了。