使用流生成隨機序列
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.
注意 #::
構造,它懶惰地遞迴 :因為它將當前隨機數預先新增到流中,所以在迭代之前它不會評估流的其餘部分。