随机布尔生成器

时间:2013-11-16 12:24:07

标签: scala

有没有一种方法允许我根据一些百分比生成一个布尔值?

例如,我需要一个有25%的机会给我假的发电机。

现在我正在做:

val rand = new Random()
val a = List(true,true,true,false)
val isFailure = a(rand.nextInt(4))

我这样做是为了让我的“25%”失败的可能性,但我不确定这是否是正确的方法,我相信有更好的方法。

有人可以指导我去哪里看或怎么做?

2 个答案:

答案 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

然后你可以在需要时读取低于阈值概率的值......如果你想对输出做任何理解,那就好了。