エヴァ6シミュレータ

始まりの福音、ちょっと乱暴だけどシミュレートした。
1万人が5000回まわして帰る時(5000回転目で確変か時短ならそれが終わるまで打つ)の収支平均
結果は間違ってる可能性があります。これをもとにして打って損しても責任は取れません^p^
(条件)
8R:1080発、15R:2030発
確変・時短中・・・玉が減らない、当たりは必ず電チューで引く
時短は78回転、2Rは出玉なし

回転/千円 2.5円 3.0円 3.3円 等価
15 -\43,533 -\35,736 -\31,057 -\20,141
16 -\30,858 -\22,376 -\17,286 -\5,411
17 -\21,100 -\12,132 -\6,751 \5,804
18 -\11,962 -\2,550 \3,097 \16,275
19 -\3,508 \6,323 \12,222 \25,987
20 \3,006 \13,368 \19,585 \34,093
21 \10,905 \21,808 \28,349 \43,613
22 \16,875 \28,254 \35,082 \51,013
23 \21,912 \33,764 \40,875 \57,468
24 \27,185 \39,436 \46,787 \63,938
25 \31,308 \43,941 \51,521 \69,207

以下はシミュレートのためのPHPソース

<?php

class Eva6Sim{

	// 大当たり確率(n分の1)
	protected $pT = 358.1;
	protected $pK = 35.8;

	// ヘソ保留での大当たり振り分け(%)
	protected $heso_2k = 25;
	protected $heso_8t = 30;
	protected $heso_8k = 16;
	protected $heso_15k = 29;

	// 電チュー保留での大当たり振り分け(%)
	protected $den_2k = 8;
	protected $den_8t = 30;
	protected $den_8k = 16;
	protected $den_15k = 46;

	// 大当たり時出玉
	protected $get2 = 0;
	protected $get8 = 1080;
	protected $get15 = 2030;

	// 時短回数(実質)
	protected $chance_jitan = 78;
	// 確変・時短のとき、電チューで1回転ごとに減る玉
	protected $ball_den = 0;

	public function run(){
		$this->convert_heso_den();

		$totalMoney = array();
		for($i = 15; $i <= 25; $i++){
			$totalMoney = array();
			for($j = 0; $j < 10000; $j++){
				list($balls, $money, $str) = $this->simulate($i);
				$totalMoney["2.5"] += $balls*2.5+$money;
				$totalMoney["3.0"] += $balls*3+$money;
				$totalMoney["3.3"] += $balls*3.3+$money;
				$totalMoney["4.0"] += $balls*4+$money;
			}
			$totalMoney["2.5"] /= 10000;
			$totalMoney["3.0"] /= 10000;
			$totalMoney["3.3"] /= 10000;
			$totalMoney["4.0"] /= 10000;

			$fp = fopen('result.txt', 'a');
			fwrite($fp, $i."\t".$totalMoney["2.5"]."\t".$totalMoney["3.0"]."\t".$totalMoney["3.3"]."\t".$totalMoney["4.0"]."\n");
			print $i."\t".$totalMoney["2.5"]."\t".$totalMoney["3.0"]."\t".$totalMoney["3.3"]."\t".$totalMoney["4.0"]."\n";
			fclose($fp);
		}
	}

	protected function simulate($chance = 20, $strFlag = false){

		/******** 初期設定 ********/
		// 現在の状態(0:通常, 1:確変, 2:時短)
		$status = 0;
		// 投資額
		$money = 0;
		// 差玉数
		$balls = 0;
		// 時短回数
		$jitan = $this->chance_jitan;

		// 結果文字列
		$resultStr = "";

		/*********** シミュレーション開始 ***********/
		for($i = 1; $i <= 5000 || $status != 0; $i++){
//			print $resultStr."\n";
			if($balls <= 0){
				$money -= 500;
				$balls += 125;
			}

			if($status == 0){ $p = $this->pT; }
			elseif($status == 1){ $p = $this->pK; }
			elseif($status == 2){ $p = $this->pT; }

			// 通常時の玉減り
			if($status == 0){
				$balls -= (250/$chance);
			}
			// 時短なら時短回数が減る
			elseif($status == 2){
				$jitan--;
				$balls -= $this->ball_den;
			}
			// 電チュー開放時の玉減り
			else{
				$balls -= $this->ball_den;
			}

					// 時短解除判定
			if($status == 2 && $jitan == 0){
				$status = 0;
				$jitan = $this->chance_jitan;
			}

			/************ 大当たり ***********/
			if(rand(1, (int)($p*10)) <= 10){
				/******* 振り分け *******/
				$furiwake = rand(1, 100);

				// ヘソで当たった場合
				// 通常からの当たりはヘソとみなす
				if($status == 1){
					// 2R確変
					if($furiwake <= $this->den_2k){
						$status = 1;
						$balls += $this->get2;
						if($strFlag){ $resultStr .= $i."\t2R確変\t".$balls."\n"; }
					}
					// 8R通常
					elseif($furiwake <= $this->den_8t){
						$status = 2;
						$balls += $this->get8;
						if($strFlag){ $resultStr .= $i."\t8R通常\t".$balls."\n"; }
					}
					// 8R確変
					elseif($furiwake <= $this->den_8k){
						$status = 1;
						$balls += $this->get8;
						if($strFlag){ $resultStr .= $i."\t8R確変\t".$balls."\n"; }
					}
					// 15R確変
					else{
						$status = 1;
						$balls += $this->get15;
						if($strFlag){ $resultStr .= $i."\t15R確変\t".$balls."\n"; }
					}
				}
				else{
					// 2R確変
					if($furiwake <= $this->heso_2k){
						$status = 1;
						$balls += $this->get2;
						if($strFlag){ $resultStr .= $i."\t2R確変\t".$balls."\n"; }
					}
					// 8R通常
					elseif($furiwake <= $this->heso_8t){
						$status = 2;
						$balls += $this->get8;
						if($strFlag){ $resultStr .= $i."\t8R通常\t".$balls."\n"; }
					}
					// 8R確変
					elseif($furiwake <= $this->heso_8k){
						$status = 1;
						$balls += $this->get8;
						if($strFlag){ $resultStr .= $i."\t8R確変\t".$balls."\n"; }
					}
					// 15R確変
					else{
						$status = 1;
						$balls += $this->get15;
						if($strFlag){ $resultStr .= $i."\t15R確変\t".$balls."\n"; }
					}
				}
			}
		}

		// 帳尻合わせ
		if($balls < 0){
			$money -= 500;
			$balls += 125;
		}

		return array($balls, $money, $resultStr);
	}

	// 累積確率に変換
	protected function convert_heso_den(){
		$this->heso_8t += $this->heso_2k;
		$this->heso_8k += $this->heso_8t;
		$this->heso_15k += $this->heso_8k;
		$this->den_8t += $this->den_2k;
		$this->den_8k += $this->den_8t;
		$this->den_15k += $this->den_8k;
	}
}

$sim = new Eva6Sim();
$sim->run();

?>