Scala使用流生成随机序列
示例
genRandom创建一个随机数流,每次调用都有四分之一的机会终止。
def genRandom: Stream[String] = {
val random = scala.util.Random.nextFloat()
println(s"Random value is: $random")
if (random < 0.25) {
Stream.empty[String]
} else {
("%.3f : A random number" format random) #:: genRandom
}
}
lazy val randos = genRandom //当randos迭代通过时,对getRandom进行惰性计算
for {
x <- randos
} println(x) //有效地随机打印此打印的次数。请注意,该#::构造会延迟递归:因为它是将当前随机数放在流之前,所以它不会评估流的其余部分,直到迭代为止。