アカウント名:
パスワード:
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
あと、僕は馬鹿なことをするのは嫌いですよ (わざとやるとき以外は)。-- Larry Wall
ハードウェアサポート (スコア:3, すばらしい洞察)
ゲームに乱数なんてつきものなんだから。
Re:ハードウェアサポート (スコア:1)
アレってなんで立ち消えたんだっけ?
#20年ぐらい昔、rand()の返値が「今のミリ秒」って恐ろしい物がありましたな。
Re:ハードウェアサポート (スコア:1, おもしろおかしい)
そんなに恐ろしかったですか?
実用的だったと思いますが。
ハードウェア乱数発生器ってのをみて、Z80のRレジスタ思い出しましたよ。
乱数レジスタと教えられて信じてました、純真だったな。
Re:ハードウェアサポート (スコア:1, すばらしい洞察)
>そんなに恐ろしかったですか?
>実用的だったと思いますが。
乱数を発生させるタイミングが周期的だったら、乱数にならないですよ。
Re:ハードウェアサポート (スコア:1)
まぁそれでも良いかって感じですから、確かに純粋に乱数じゃないですね
人の代わりにコンピューターが制御すればその値は予測出来るかな?
まぁコンピュータつかってインチキしようと考える人の居なかったのどかな時代の方法ですね
Re:ハードウェアサポート (スコア:0)
どちらにせよ、応用範囲が狭すぎて、とてもrand()の実装として使えたものではないと思います。
Re:ハードウェアサポート (スコア:1)
作るとは思いますよ
複数回呼ぶと相関がでてしいますからねぇ~
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との互換性確保のためだけに設けられています。
Re:ハードウェアサポート (スコア:0)
> 実用的だったと思いますが。
大量に乱数が欲しいときに、ループで回すと同じ値ばかりになっちゃいますよ?
「今のマイクロ秒」ならマシですが。
Re:ハードウェアサポート (スコア:1)
>今のミリ秒
pen4くらいで「今のクロックカウント」を疑似乱数に混ぜると結構いける気がする。
Re:ハードウェアサポート (スコア:1, 興味深い)
Intel、AMD、VIA辺りのチップセットには内臓されてます。
Re:ハードウェアサポート (スコア:0)