アカウント名:
パスワード:
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
吾輩はリファレンスである。名前はまだ無い -- perlの中の人
ハードウェアサポート (スコア:3, すばらしい洞察)
ゲームに乱数なんてつきものなんだから。
Re:ハードウェアサポート (スコア:1)
アレってなんで立ち消えたんだっけ?
#20年ぐらい昔、rand()の返値が「今のミリ秒」って恐ろしい物がありましたな。
Re:ハードウェアサポート (スコア:1, おもしろおかしい)
そんなに恐ろしかったですか?
実用的だったと思いますが。
ハードウェア乱数発生器ってのをみて、Z80のRレジスタ思い出しましたよ。
乱数レジスタと教えられて信じてました、純真だったな。
Re:ハードウェアサポート (スコア:1, 参考になる)
値の変化が命令実行数に依存するため、どうしても偏りが出ます。
デバッグでプログラム中の命令数を修正すると偏りの分布も変わるので、乱数と信じてゲームに使用するとなぜかデバッグ作業がゲームのようになってしまいます。w
Rレジスタの値は乱数と見なすのではなく、乱数の種か補正など補助的に使用するのがよいです。
http://ja.wikipedia.org/wiki/Z80 [wikipedia.org]がRレジスタについて詳しくないので、ここに書いちゃいます。
RレジスタはDRAMリフレッシュ時のRASアドレス生成用の7bitのカウンタです。
Z80は各命令フェッチに続いてDRAMリフレッシュを行うメモリアクセスサイクルになっており、リフレッシュサイクルが必須なDRAMを他CPUより容易に接続することができました。
Rレジスタがプログラム実行中に刻一刻と変化することから、その値はよく乱数発生プログラムの中で使用されました。(そのままでは乱数にならないのは上記の通り)
その後の半導体の集積度向上により大容量化したDRAMのRASアドレス幅が8bit以上必要になり、またリフレッシュ時のRASアドレスをDRAM内部で自動生成するCAS before RASリフレッシュモードを備えるDRAMが一般的になったため、Rレジスタは本来のRASアドレスに使用されることはなくなりました。
Z80互換CPUのHD64180ではリフレッシュコントローラを内蔵し、Rレジスタと無関係にDRAMリフレッシュを行うことができます。HD64180のRレジスタはZ80との互換性確保のためだけに設けられています。