返信元の記事 | |||
【15】 | RE:教えてください 山学校 (2007年11月20日 17時49分) |
||
はじめまして。 >パチンコやパチスロの当選確率を算出する分母はすべて2の16乗=65536です。 分母にそんな大きな数字が必要ですか?。 海物語の1/315.500は、65536の分母に対して何個の分子になります?。 公表確率は小数点以下第三位まで出ていますよ。 疲れ目さんが仰る通り、2/631で事足りませんか。 大当たりの仕組みとして、まずカウンタから乱数を1個取得しますよね。その数値をプログラムで検証する訳ですが、私は「IF構文」を用いていると思います。 IF RUND="A or B " THEN 〜(合ってるかな?) もし取得乱数がA又はBならば直ちに〜を実行せよ。 〜には大当たり用のプログラムがある訳です。 分母が65536ですと、A or B or C...と、通常時でも200個以上必要だし、確変時には2000個以上必要になります。 プログラマーはこんな効率の悪い事はしないと思いますが…。 |
■ 22件の投稿があります。 |
3 2 1 |
【20】 |
関数マニアン (2007年11月21日 16時56分) |
||
これは 【15】 に対する返信です。 | |||
山学校さん >私は「IF構文」を用いていると思います。 IFは表計算にもあるような単なる仮定法でしょw パチンコパチスロにはZ80アセンブラの互換プログラムが使用されてますよ。 ちなみに、Z−80はインテル社の作った8080というCPUをザイログ社が拡張して作った物です。 いろんな命令があります。 遊戯機の場合、仰るような分岐命令だけは不十分ですよw Z80には転送、演算、割り込みなどいろんな命令がセットになってますので。複数のレジスタも入ってて、それを使ってるんですよ。 >プログラマーはこんな効率の悪い事はしないと思いますが…。 今も昔もちょっとしたことに大量のプログラムを書かなければならないのは変わってませんよ? 例えば10+20+30を計算してX番地のメモリーに保存する場合、 LD X 10 ADD X 20 ADD X 30 これはどういう動作になるかというと 1. X番地に10を書き込む 2. X番地の値をCPUに読み込む 3. 読み込んだ値に20を足す 4. 計算結果をX番地に書き込む 5. X番地の値をCPUに読み込む 6. 読み込んだ値に30を足す 7. 計算結果をX番地に書き込む という7つの動作になります。 X番地のデータを読んだり書いたりやたらに繰り返しています。 でもCPU内部には読み込んだデータを保存しておくためのちょっとしたメモリーがあります。このメモリーをレジスタといいますが、これを直接操作できます。 1. あるレジスタに10を書き込む 2. そのレジスタの値に20を足す 3. そのレジスタの値に30を足す 4. 計算結果をX番地に書き込む 7行あったのが4行に減りました。その分だけ処理速度は上がったわけです。 しかし、そのレジスタを使えるようにプログラムも用意しなければならない。だから速度は上がってもプログラム段階での(下地には)手間はかかるものなんですよ。 |
|||
© P-WORLD