今回はフラグ抽選をするためのプログラムを書きます。
フラグ抽選の仕組みも説明します。
今回の記事はPart9です。
自作パチスロについて記事のまとめはこちらです。
フラグ抽選の演算方式について
パチスロにおける「抽選」のタイミングは「レバーオン時」です。
それ故に、レバーオンには力が入る訳です。
「俺はレバーオンで乱数を狙える!」というギャグを放つ人をよく見掛けますが、それは正直ムリな話です。体感機でも無い限り非現実的です。
「抽選」はレバーオン時に0〜65535の範囲の数字をランダムで選びます。これがいわゆる「乱数」と呼ばれるものですね。
この「乱数」を元に成立小役を算出するのが「フラグ抽選」と言われるものです。
フラグの抽選方式は色々あるらしいですが、今回は私でも知っている「減算演算方式」で抽選したいと思います。
減算演算方式の仕組み
読んで字の如く、レバーオンで生成した「乱数」からどんどん引き算をしていきます。
引き算の結果が0になったら、そのフラグが成立小役です。
最後まで0にならなかったらハズレとして処理がされます。
引く数字は小役フラグの成立確率となります。
・パチスロの抽選分母は 65536 です。1バイト(256)×1バイト(256)
・リプレイの成立確率が 1/7.3 だった場合、8977 / 65536 となる。
・減算演算方式でリプレイの成立を判定する場合は、乱数から 8977 を減算する
上のテキトーなイラストで考えていましょう。
- レバーオンで生成した乱数は12,345です。
- 減算していきます。
- 12,345 – 8,977(リプレイ確率) = 3,368 ゼロ以上ですので次に進みます。
- 3,368 – 8,151(ベル確率)= −4,783 ゼロ以下なので成立役はベル
- ベル入賞
という流れになります。
フラグ抽選のコード(C#)
CSVデータ読み込み部分
// あらかじめCSVを読み込んで、このListに格納する
List<string[]> _lotteryDatas = new List<string[]>(); // CSVの中身を入れるリスト;
フラグ抽選メソッド
string FlagLottery()
{
int _randomNumber; // 乱数
int _settingNumber = 6; // 設定
string flagName = "hogehoge";
_randomNumber = Random.Range(0, 65535); // フラグ抽選
for (int i = 0; i < _lotteryDatas.Count(); i++)
{
int subtraction = int.Parse(_lotteryDatas[i][_settingNumber]); // int型にキャスト
_randomNumber -= subtraction; // 減算する
if (_randomNumber <= 0)
{
flagName = _lotteryDatas[i][0]; // 要素0はフラグ名
return flagName;
}
}
flagName = "Hazure";
return flagName;
}
}
小役確率のCSV
参考までに、小役確率読み込み用のCSVも載せておきます。
これはあくまでテスト用です。
Replay,8977,8977,8977,8977,8977,8977
Bell,8151,8253,8348,8445,8645,9051
Suika,526,556,586,620,650,679
Cherry,495,520,520,574,598,623
Reg,144,148,188,204,244,244
Big,228,232,232,240,240,244
65536をこの確率で割ると小役確率が算出できますが、RegとBigの確率は5号機のアイムジャグラーEXの確率です。
パ●った訳じゃないです。あくまでリスペクトです。
リプレイなどの小役確率は別の5号機を引用しました。
何の機種かわかったあなたはすごいです。というか変態です。
コメント
はじめまして。同じく個人でパチスロアプリの作成を志す、たがやソフトです。その小役確率は、エヴァまごでしょうか!全小役に設定差があるのが特徴的ですね。完成を楽しみにしています!
すごい!エヴァまご正解です!
たがやソフトさん変態ですね!!(良い意味で)
たがやソフトさんみたいにハイクオリティのスロットを目指します。
同志としてよろしくお願いします!
エヴァまご
と書いた後に、遅かったと気づきました。約束と迷った。
迷う時点ですごいです。変態です!