ビンゴ@ドラクエ8の期待値 | ふぁんくしょん

ビンゴ@ドラクエ8の期待値

ドラクエⅧのカジノにはビンゴゲームがありますが、儲かるゲームなのか損するゲームなのか知りたかったので、プログラムを書いて実験してみました。

プログラムでは以下を仮定しました。
・全てのボールが公平に出る
・ビンゴカードは右上から1,2,3,4と順番に並んでいる事にする(勝率?には影響しないので)

標準乱数を使っている辺りが不安ですが大勢には影響ない範囲でしょう。
プログラムに間違い等ありましたら突っ込みお願いします。
3000万ゲームで回収率2.58(258%)と出ました。


//---------------------------------------------------------------
#include<iostream>

using namespace std;

const int kaisuu = 30000000;

bool card[5][5];
double score[] = {0,0,0,400,200,100,50,25,10,5};

bool isbingo()
{
for(int i = 0;i < 5;i++)
{
if(card[i][0] && card[i][1] && card[i][2] && card[i][3] && card[i][4])return true;
if(card[0][i] && card[1][i] && card[2][i] && card[3][i] && card[4][i])return true;
}

if(card[0][0] && card[1][1] && card[2][2] && card[3][3] && card[4][4])return true;
if(card[4][0] && card[3][1] && card[2][2] && card[1][3] && card[0][4])return true;
return false;
}

int main()
{

double haitou = 0;
for(int l = 0;l < kaisuu;l++)
{
for(int i = 0;i < 5;i++)
for(int j = 0;j < 5;j++)
card[i][j] = false;

card[2][2] = true;

for(int i = 0;i < 10;i++)
{
int ball = rand() % 25;
if(card[ball/5][ball%5])
i--;
else
{
card[ball/5][ball%5] = true;
if(isbingo())
{
haitou += score[i];
break;
}
}
}
}

double kaishuuritu = haitou / (double)kaisuu;

cout << kaishuuritu << endl;

}
//---------------------------------------------------------------