第2章 ストリーム API の使い方 : 問題 5 : iterate メソッドによる Stream の生成
問題 5
Stream.iterate
を使って乱数の無限ストリームを生成せよ
このときMath.random
を呼び出すのではなく、線形合同生成機(Linear Congruential Generator)を直接実装すること
解答
public static LongStream random(long seed) { final long a = 25214903917L; final long c = 11; final long m = 1L << 48; return LongStream.iterate(seed, x -> (a*x + c) % m); }