NARITA YUSUKE

コンピュータや人間の意識ではランダムは作れない

群れのシミュレーション方法(Boids)について考えていたらひとつの解に至ったお話し。

ランダムってなんだろう?

みんなの大好きな Wikipedia によると、

ランダム(Random)とは、でたらめ(乱雑)である事。何ら法則性(規則性)がない事、人為的、作為的でない事を指す。
ランダム – Wikipedia

と書かれている。ふむふむ。

では「法則性(規則性)がない」状態をつくることってできるんだろうか。

コンピュータや人間の意識ではランダムは作れない

どこかでこんな実験が行われた。

「10人協力してください。そしてこの部屋の中でランダムに散らばってください。」

ランダムであればくっついたり孤立したりすることもあるはずだけど、みんな同じくらいの間隔を開けて散らばったそうだ。意識的にランダムを作ろうとしても規則性が生まれてしまう。とても人間らしい。

コンピュータを使えば簡単に乱数(ランダムな数)が作れるけど、コンピュータ上で作り出される乱数も時間やチップセットの熱雑音等を利用した擬似乱数でしかないらしい。でも乱数を作り出すのに使うタネ(時間とか熱雑音)が毎回違うから「ほぼランダム」になり実用上困ることはないのだ。

生体シミュレーションのお話し

自然界におけるランダムを考えてみる。たとえば動物の動きをコンピュータで再現する場合には「ランダム」が必要だろうか。

ボイド(Boids)という動物の群れのシミュレーション方法がある。Boids ではとても単純な3つのルールを使って計算で群れの動きをシミュレートする。(ここでは鳥の群れのシミュレーション)

ルール1: 結合(Cohesion)
鳥オブジェクトが他の鳥オブジェクトが集まっている群れの中心方向へ向かうように方向を変える。
ルール2: 分離(Separation)
鳥オブジェクトが他の鳥オブジェクトとぶつからないように距離をとる。
ルール3: 整列(Alignment)
鳥オブジェクトが他の鳥オブジェクトと概ね同じ方向に飛ぶように速度と方向を合わせる。

これだけで群れの動きをシミュレートできるという。 ほんとうだろうか? 実際にやってみた。


たしかに群れっぽい動きをしている。

自然に見えるこの群れのシミュレーションもランダムではなく、3つのルールに従って動いているにすぎない。

ただ最初に擬似乱数を使ってランダムっぽい位置に置いているから、リロードするたびに群全体が違う動きになっている。では、規則的に同じ位置に置いたら何度リロードしても同じ群れの動きになるのだろうか。やってみよう。


自然な動きに見えるけど繰り返してもまったく同じ動きになるはず。

ランダムの処理を一切使わなくても群れっぽい自然な動きになっている。

動物の動きを再現するのにランダムは必要ない。そして自然界の動物の動きもなんらかのルールの上に成り立っているはずだ。

動物でさえも一定のルールに従って動いているとすれば、目の前の動物が次にどう動くのか計算で予見することができるのかというと、それは不可能だ。動物が存在する地形や気候、体調など、ルールに適用される「条件(変数)」が多すぎるためコンピュータで計算することができない。

世の中に偶然はない。すべては必然。

動物の本能や人間の感情でさえもルールに基づいたシナプスのシグナル伝達の成果であって、ランダムとか偶然によるものではない。そして「サイコロを転がす」「棒を垂直に立てて手を離す」といったことで生まれる偶然に見える結果も、運命的な偶然のような出来事も、一定のルールと無数の条件の組み合わせによって成り立っている「必然」であって、偶然によるものは存在しない。

こう結論付けてしまうと夢のないつまらない話になってしまいそうだけど、

好きなあの子と出会ったのも意味のない偶然なんかじゃなくて必然。

そう考えるとむしろ幸せな気持ちになりますよね!(ロマンチックおち)