使用流生成随机序列
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 // getRandom is lazily evaluated as randos is iterated through
for {
x <- randos
} println(x) // The number of times this prints is effectively randomized.
注意 #::
构造,它懒惰地递归 :因为它将当前随机数预先添加到流中,所以在迭代之前它不会评估流的其余部分。