ただしい、乱数

いやーわたしゃPGじゃないんで吹っかけられると困りますよ?wwwww

沙耶です。

X箱360のカルドセプトサーガのさいころが偶数・奇数という周期を繰り返す、というネタはもう古いといえば古いのですが。


さて、ちょっとでもPGをかじったことがあれば簡単に分かるんですが…安易にこのプログラマを否定できないんですよ。なぜか。

”完全な乱数性をもつ乱数発生アルゴリズム”は非常に高度な数学的知識を要求します。

皆さんがさいころを投げて数字を出す。たったそれだけのことを、プログラムで完全に再現するのは非常に難しい、というか無理。不可能。一般的にプログラムで作れるのは”擬似”乱数と呼ばれるもので、乱数に近い(ように見える)数字です。

なぜって思うかもしれませんが…乱数ってナニ?って考えれば分かりやすい話です。

乱数、というのは完全に無作為に選ばれる、完全に予測不能な数字を指します。
一方、プログラムというのは、決められた計算式を計算する手順書です。

決められた手順で計算してるのですから、「常に同じ結果が」得られる必要があります。
つまり、プログラムでは乱数は作れません、証明おわり。

さて、ではC言語などに用意されている乱数を生み出す関数、とはナニをしているのでしょう。
これは、一般に線形合同法と呼ばれる方法で擬似乱数を生み出します。この方法は、この方法で乱数を得た場合、その次に現れる乱数が、「ある程度限定されてしまいます」。

特にC言語のrand()は有名で、最下位ビットが0と1を繰り返します。そのため、これを乱数として用いる場合、ビットシフトや丸め込みを行い、最下位ビットを捨てたりします。
ゲームなどで、起動してから~~すれば必ずこうなる、みたいなのがあるのは、この乱数ルーチンに起因します。

コレに対し、かなりの高精度で乱数に近い数列を生めるのが、メルセンヌ・ツイスタと呼ばれる方法で、そもそもこの話はPGなら誰でも知ってなきゃならないというか、アルゴリズムの本には”絶対に”書いてある話です。
ぶっちゃけPG名乗れねぇよって世界だと思います。乱数の話すら知らないなんて。
メルセンヌ・ツイスタはいい解説がWebにあるから興味があれば読んでみるといい。

奥村大先生の本を2000回暗唱してこいって話ですよ。

ていうかね、アルゴリズム辞典なんてPGなら全員持ってなきゃいけない聖書でしょ。
うちらのUNIX Super TEXTやK&Rやアニマル本と並ぶ聖書でしょ。TeX解説本だけの人とか思ってんじゃないだろうなwwwwwwwwww
専門出の新人だって話ですけど、専門の教員連中はナニを教えて金取ってんでしょうか。
その卒業生一人が特別バカだったってんならソコまでの話ですが、この程度も知らないバカを卒業させた責任くらいはあるんじゃないのかねぇ?

とりあえず理系でプログラムやらなきゃならん連中と数学系の連中はこの本だけでも揃えとけ。

[数学・理系全員]:持ってませんとか名前も知りませんとか言うやつは退学届けの書き方の本を代わりに買え。
LaTeX2e美文書作成入門 著:奥村晴彦
C言語による最新アルゴリズム事典 著:奥村晴彦

[Cやるやつは買っとけ]:このほかにポインタで躓いたりするならそれ専門のものを。
新ANSI C言語辞典 著:平林 雅英
プログラミング言語C ANSI規格準拠 著:カーニハン&リッチー

[UNIX触るやつは買っとけ]:サーバとしてではなく、学生時分にユーザーとして触ることも多いと思うが、絶対に役に立つ。
UNIX Super TEXT

シェルやsed/awkをいじるならこのほかに
・入門UNIXシェルプログラミング―シェルの基礎から学ぶUNIXの世界 著:ブルース ブリン
・sed & awk デスクトップリファレンス 著:アーノルド ロビンス

辞書的なもんだが、どれも聖書です。理系なら買っといて何一つ損はない。石田晴久先生の本も実によい。
で、何か知りたいとか思ったら、入門とか分かりやすいとか書いてあるNTTだとかソフトバンクの本は華麗にスルーして、オライリーの動物本を選べ。難しいし読みにくいが一生モノの本で、それさえ押さえときゃあとはいらん。

他にもいい本は一杯あるけど、最低限の世界。そして、これ押さえていてなおかつrand()関数でゲーム作ったというなら、PGにとってそれはもう詐欺と呼ばれても仕方のないことだ。

ああ、これから先オブジェクトプログラミングが主流になりそうなら、オブ脳よんどけwwwwwwwwwwwwwwwwww

0 thoughts on “ただしい、乱数

  1. dion規制の真っ最中なので規制スレ見てたら話題に出てきたのよ。(´・ω・`)
    ぬこと一緒に。(*´ω`)
    ttp://nukonuko.ddo.jp/nukoup/img/3238.jpg
    ttp://nukonuko.ddo.jp/nukoup/img/3292.jpg

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です