動画チュートリアル 『UE4 Blueprint Quickshot 12 - Random Streams (v4.7)』で出てくる Seed や Initial Seed、Stream とは何でしょうか?
動画チュートリアルでは Random Float in Range from Stream (ストリームから一定範囲にある Float 値の乱数を得る) 関数を利用して乱数を作っています。
「乱数」はでたらめの数という意味ですが、コンピュータで作られる乱数は、一定の計算に基いて作られているため、本当はでたらめではありません (つまり、予測可能です)。その計算の基になる数が Seed (シード、種、初期値) です。
乱数を計算する方式は多数あります。たとえば、 **シードにある数を掛けてさらに別の数を加えたものの下4桁を乱数にし、さらにその得られた乱数から新たなシードを作って新たな乱数を得る (以下、延々と続けることができる) **、などというやり方もあります。
ストリームと乱数とシードの関係を分かりやすく説明するために、円周率を使ったごくごく簡単な 1 桁の擬似乱数を考えてみます。円周率は、
3.14159 26535 89793 23846 26433 83279 50288…
だとして、シードが 3 の時は、円周率の小数点以下第3位以下の数を乱数とします。つまりこの場合、
1、5、9…
というように乱数が生成されることになります。シードが 5 の時は、小数点以下第5位以下の数
9、2、6…
という乱数が生成されることになります。この時、1、5、9… や 9、2、6…が、シードから得られるストリーム (一連の乱数) となります。(さらに、このストリームの中から「 5 以下の乱数を取り出す」などと 範囲 を指定することもできます。)
上記の例から、シードが決まれば、乱数のストリームが 1 個だけ決まることが分かります。言い換えるならば、 シードを変えなければ、ずっと同じ乱数が生成されることになります。 このことは、シードの値がどんな値でも同じです。必ず一意にストリームが決まります。また、どんなに複雑な計算方式を用いる乱数であっても同じです (もちろん UE4 の乱数発生関数であっても)。乱数の流れは一意に決まります。ですから、動画チュートリアルでは Initial Seed (最初に設定されているシード) を変更して、ブッシュの位置を変えています。言い換えれば、Initial Seed を変更するまでは、同じ乱数が使われることになるので、ブッシュの位置も予測可能 (「同じ位置になるはずだ」と予測できる) なのです。
関連する UE4 ドキュメンテーションランダム ストリーム