函数chooseint在Scala中的Rng库中

时间:2014-12-16 16:42:48

标签: scala random

这些功能来自Rng.scala。函数int生成伪随机32位。函数chooseint不喜欢nextInt(n: Int)的{​​{1}},它做类似的事情。

java.util.Random

def int: Rng[Int] = nextbits(32) def chooseint(l: Int, h: Int): Rng[Int] = int map (x => { val (ll, hh) = if(h < l) (h, l) else (l, h) // using longs to avoid overflows val diff = hh.toLong - ll.toLong if (diff == 0) ll else (ll.toLong + (math.abs(x.toLong) % (diff + 1))).toInt }) 是否真正为chooseintl = 0生成均匀分布的伪随机数?

1 个答案:

答案 0 :(得分:1)

不,原因是随机数的范围并不总是被(diff + 1)整除。它在the Java API docs中有很好的记录。