乱数(MSXの)
2025.08.17
MSX BASICのソースを見れば乱数発生の仕組みがわかると思うけど、
いや、昔調べたような気がする。覚えてない。

学生時代に同級生がテトリスを自作して、その時に使った乱数ルーチンはMSXのROMではなく、独自に組み込んだもの。
Z80マシン語秘伝の書に載っていた乱数ルーチンをアレンジしたと思う。

乱数ってのは意外と難しく、完全な乱数って作れないのです。

BASICに内蔵されている乱数は、算術乱数というやつだったと思う。計算で次の値を求めている。どうしても偏りがある。
ある数に別の数をかけたり足したりして、その下位桁を取るとか、そんなやり方です。だからパターンが決まってしまう。
不確定な要素が含まれてないわけ。

パチスロ機の場合は、ハードウェアカウンタを回しておき、レバーを叩いた瞬間の値をとるというやり方でした。
これは昔、体感機で同期できてしまっていたので、その後に対策がとられて、ずっと高速で回るようになっていると思われます。

完全な乱数が必要なら物理乱数になります。電気的なノイズを利用したものがよく使われると思うけど、それだって外乱を受けるようではダメです。

MSX用乱数発生カートリッジとか? 需要ないだろうな。
トラックバックURL
トラックバック一覧
コメント一覧
コメント投稿

名前

URL

メッセージ

- CafeLog -