乱数を時間に積む — ブラウンノイズ
乱数をそのまま打つのでなく、前の値に足し込む。x += (random - 0.5)。一歩ごとの向きはランダムでも、足し続けるので値はゆっくり漂う。一様乱数を一粒ずつ打つのとは別物で、隣の点が前の点を覚えている。
乱数を逐次に足し込むのは、時間方向の積分にあたる。各サンプルが独立な白色ノイズを積分すると、近い時刻どうしが強く相関した信号になり、スペクトルは低音側に 1/f² の坂で傾く。聞くと滝の遠鳴りのようにこもる音、ブラウンノイズ(茶色のノイズ)。1次元の酔歩(ランダムウォーク)とまったく同じ数学。発見者ロバート・ブラウンが顕微鏡で見た花粉の不規則な運動、ブラウン運動から名がついている。
上の線が一様乱数を一粒ずつ打ったもので、各点が独立なので毎サンプルてっぺんと底を行き来してとげとげに潰れる。下の線がその乱数を前の値に積んだブラウンノイズで、近い時刻どうしが結びついてなめらかに上下にうねる。同じ Math.random() を、独立に置くか、積むかの違いだけ。
積分すると、近い時刻が強く結びついて低い周波数ばかりが残る。放っておくと値がどこまでも漂って画面外へ出てしまう。端へ寄ったぶんだけ中心へ引き戻す力を足すと、漂いを保ったまま枠の中に留まる。酔歩を箱の中で跳ね返すのと同じ手当て。
薄い横線が引き戻しの壁。明るい線は引き戻しなしで、積み続けるうちに壁を越えて画面の上下へ逃げていく。暗い線は壁に近づくたびに (held - limit) * 0.1 だけ中心へ押し戻されるので、うねりの質はそのままに枠の中で漂い続ける。乱数を積むだけで、砂嵐がうねりに変わる。