jug7.com
[ home / cgi / juggler / column / diary / bbs / link / welcome ]
source : アイムジャグラー EX
#!/usr/bin/perl
# アイムジャグラー EX シミュレーション
$cginame = 'imjug.cgi';
$title = 'アイムジャグラーEX シミュレーション';
if ($ENV{'REQUEST_METHOD'} eq 'POST') {
read (STDIN, $input, $ENV{'CONTENT_LENGTH'});
}
foreach $str (split(/&/,$input)) {
($name,$value) = split(/=/, $str);
push(@input, $value);
}
($s, $play, $play_meth, $big_meth) = @input; # 設定, プレイ数, 通常時打ち方, BIG中打ち方
$play_meth[1] = 'checked' if $play_meth eq '';
$big_meth[1] = 'checked' if $big_meth eq '';
$play_meth[$play_meth] = 'checked';
$big_meth[$big_meth] = 'checked';
print "Content-Type: text/html\n\n";
# ヘッダとフォームの表示
print <<"__ HTML __";
<!DOCTYPE html PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN'>
<html lang='ja'>
<head>
<meta http-equiv='Content-Type' content="text/html; charset=shift_jis">
<title>jug7.com - cgi $title</title>
<style type="text/css"> <!--
A:hover {color:#ff0000;}
--></style>
</head>
<body text='#000000' bgcolor='#ffffff' link='#0000ff' alink='#ff0000' vlink='#0000cc'>
<font size=7><b><font face='Times New Roman,Times'>jug</font><font face='Bookman Old Style,arial black,Helvetica Black'>7</font><font face='Times New Roman,Times'>.com</font></b></font>
<hr color='#00aa00'>
<strong>[ <a href='../index.html'>home</a> / <a href='index.html'>cgi</a> / <a href='../jug/index.html'>juggler</a> / <a href='../column.html'>column</a> / <a href='../diary/index.html'>diary</a> / <a href='bbs.cgi'>bbs</a> / <a href='../link.html'>link</a> / <a href='../intro.html'>welcome</a> ]</strong>
<div align='center'><h2>$title</h2></div>
<hr width='70%'>
<div align='right'>[ <a href='../simu_data_imjug.html'>data</a> / <a href='imjug_memo.html'>memo</a> / <a href='imjug.html'>source</a> ]</div>
<br><br><center>
<form action='$cginame' method='POST'>
<table border=0>
<tr><td>設定</td><td><input type='text' size=10 name='s' maxlength=1 value='$s'></td></tr>
<tr><td>試行ゲーム数</td><td><input type='text' size=10 name='play' maxlength=5 value='$play'></td></tr>
</table><br>
<table border=1 cellspacing=0><caption><font size=2>打ち方</font></caption>
<tr><td bgcolor='#ffffcc'>通常時</td><td><input type='radio' name='play_meth' value=0 $play_meth[0]> <font size=2>順押し適当</font><br>
<input type='radio' name='play_meth' value=1 $play_meth[1]> <font size=2>順押しチェリー狙い</font><br>
<input type='radio' name='play_meth' value=2 $play_meth[2]> <font size=2>逆ハサミ完全小役奪取</font></td>
<td bgcolor='#ffffcc'>BIG中</td><td><input type='radio' name='big_meth' value=0 $big_meth[0]> <font size=2>順押し適当</font><br>
<input type='radio' name='big_meth' value=1 $big_meth[1]> <font size=2>チェリー狙い</font><br>
<input type='radio' name='big_meth' value=2 $big_meth[2]> <font size=2>逆ハサミ小役完全奪取</font></td></tr>
</table><br>
<input type='submit' value="開始">
<br><br>
<table border=0><tr><td>
BIG、REG成立プレイで揃えるが、1枚のコインロスとした。(先光り時はロスなし)<br>
プレイ数は最大 12000 P まで。
</td></tr></table>
</form></center>
__ HTML __
# エラーチェックと GET 送信
if ($play > 12000) { $error = 1; $er_msg = 'プレイ数は最大12000Pまでです。'; }
if (!$play or !$s) { $error = 1; $er_msg = '記入漏れがあります。'; }
if (grep { /[^\d\.]/ } @input) { $error = 1; $er_msg = '不適切な文字が記入されています。'; };
if ($ENV{'REQUEST_METHOD'} ne 'POST') { $error = 1; $er_msg = 0; }
if ($er_msg) {
print q{<center><b><font color='red' size=4>*** ERROR !! ***</font><br><br>},"\n";
print "$er_msg</b></center>\n";
}
if ($error) {
print '<br><br><br><br><br>';
print q{<div align='right'>[ <a href='../simu_data_imjug.html'>data</a> / <a href='imjug_memo.html'>memo</a> / <a href='imjug.html'>source</a> ]</div>};
print q{<strong>[ <a href='../index.html'>home</a> / <a href='index.html'>cgi</a> / <a href='../jug/index.html'>juggler</a> / <a href='../column.html'>column</a> / <a href='../diary/index.html'>diary</a> / <a href='bbs.cgi'>bbs</a> / <a href='../link.html'>link</a> / <a href='../intro.html'>welcome</a> ]</strong>};
print '</body></html>';
exit;
}
# data 65536
@big = (160,164,164,168,168,172); $big = $big[$s-1];
@reg = (100,104,132,144,172,172); $reg = $reg[$s-1];
$rep = 8980;
@che = (1952,1952,1964,1972,1984,1984); $che = $che[$s-1]; $big_che = 1984;
@grape = (10100,10100,10100,10100,10100,10600); $grape = $grape[$s-1]; $big_grape = 63432;
$jug = $big_jug = 60;
$bell = $big_bell = 60;
@che_big = (68,68,68,72,72,72); $che_big = $che_big[$s-1];
@che_reg = (44,44,56,60,72,72); $che_reg = $che_reg[$s-1];
print q{<table border=1 cellspacing=0 align='center' cellpadding=2><caption>シミュレーション結果</caption>},"\n";
print q{<tr align='center' bgcolor='#ffffcc'><td><font size=2>ゲーム数</font></td><td><font size=2>当選</font></td><td>};
print q{<font size=2>BIG<br>獲得</font></td><td><font size=2>補足</font></td><td><font size=2>BIG<br>回数</font></td><td><font size=2>REG<br>回数</font></td>};
print q{<td><font size=2>投資</font></td><td><font size=2>コイン</font></td><td><font size=2>total<br>ゲーム数</font></td></tr>},"\n";
#---------------------------
# シミュレート開始
#---------------------------
$g = $count = $coin = $bigcount = $regcount = $k = $totalk = $bigget = $loss = $bigloss = $out = 0;
$bigget = $msg = ' ';
while (1) {
$g++; $count++;
if ($coin < 3) { $coin += 50; $k++; $totalk++; }
$coin -= 3;
$r = int(rand(65536)+1);
if ($r <= $grape) { $coin += 7; } # grape
elsif ($r <= $grape+$rep) { $coin += 3; } # replay
elsif ($r <= $grape+$rep+$che) { # che
# ボーナス重複
if ($r <= $grape+$rep+$che_big) { # BIG
$flag = 1; $bigcount++; $get="<font color='red' face='Arial black'><b>777</b></font>";
$msg = 'チェリー重複';
while (1) {
$r = int(rand(65536)+1); $bigget -= 1;
if ($r <= $big_grape) { $bigget += 14; $out += 14; }
elsif ($r <= $big_grape+$big_che) {
if ($big_meth==0) {
$r = int(rand(21)+1); if ($r<=14) { $bigget += 14; $out += 14; } else { $loss += 1; $bigloss += 1; }
} else { $bigget += 14; $out += 14; }
} elsif ($r <= $big_grape+$big_che+$big_bell) {
if ($big_meth==0) {
$r = int(rand(441)+1); if ($r<=98) { $bigget += 14; $out += 14; } else { $loss += 1; $bigloss += 1; }
} elsif ($big_meth==1) { $loss += 14; $bigloss += 1; }
elsif ($big_meth==2) { $bigget += 14; $out += 14; }
} elsif ($r <= $big_grape+$big_che+$big_bell+$big_jug) {
if ($big_meth==0) {
$r = int(rand(9261)+1); if ($r<=931) { $bigget += 14; $out += 14; } else { $loss += 1; $bigloss += 1; }
} elsif ($big_meth==1) { $loss += 14; $bigloss += 1; }
elsif ($big_meth==2) { $bigget += 14; $out += 14; }
}
if ($out >= 350) { last; }
}
$coin += $bigget; push(@bigget, $bigget);
} elsif ($r <= $grape+$rep+$che_big+$che_reg) { # REG
$flag = 1; $regcount++; $get='<b>REG</b>'; $msg = 'チェリー重複'; $coin += 104;
}
if ($flag) {
$r = int(rand(4)+1);
if ($r>1) { # 後光り
if ($play_meth==0) {
$r = int(rand(21)+1); if ($r<=7) { $coin += 2; } else { $loss += 2; }
} else { $coin += 2; }
$coin -= 1; # ボーナスを揃える分
}
} else { # ボーナス非重複
if ($play_meth==0) {
$r = int(rand(21)+1); if ($r<=14) { $coin += 2; } else { $loss += 2; }
} else { $coin += 2; }
}
} elsif ($r <= $grape+$rep+$che+$bell) { # bell
if ($play_meth==0) {
$r = int(rand(441)+1); if ($r<=98) { $coin += 14; } else { $loss += 14; }
} elsif ($play_meth==1) { $loss += 14; }
elsif ($play_meth==2) { $coin += 14; }
} elsif ($r <= $grape+$rep+$che+$bell+$jug) { # jug
if ($play_meth==0) {
$r = int(rand(9261)+1); if ($r<=931) { $coin += 10; } else { $loss += 10; }
} elsif ($play_meth==1) { $loss += 10; }
elsif ($play_meth==2) { $coin += 10; }
} elsif ($r <= $grape+$rep+$che+$bell+$jug+$big) { # BIG
$flag = 1; $bigcount++; $get="<font color='red' face='Arial black'><b>777</b></font>";
$r = int(rand(4)+1);
if ($r>1) { $coin -= 1; } # 後光り
while (1) {
$r = int(rand(65536)+1); $bigget -= 1;
if ($r <= $big_grape) { $bigget += 14; $out += 14; }
elsif ($r <= $big_grape+$big_che) {
if ($big_meth==0) {
$r = int(rand(21)+1); if ($r<=14) { $bigget += 14; $out += 14; } else { $loss += 1; $bigloss += 1; }
} else { $bigget += 14; $out += 14; }
} elsif ($r <= $big_grape+$big_che+$big_bell) {
if ($big_meth==0) {
$r = int(rand(441)+1); if ($r<=98) { $bigget += 14; $out += 14; } else { $loss += 1; $bigloss += 1; }
} elsif ($big_meth==1) { $loss += 14; $bigloss += 1; }
elsif ($big_meth==2) { $bigget += 14; $out += 14; }
} elsif ($r <= $big_grape+$big_che+$big_bell+$big_jug) {
if ($big_meth==0) {
$r = int(rand(9261)+1); if ($r<=931) { $bigget += 14; $out += 14; } else { $loss += 1; $bigloss += 1; }
} elsif ($big_meth==1) { $loss += 14; $bigloss += 1; }
elsif ($big_meth==2) { $bigget += 14; $out += 14; }
}
if ($out >= 350) { last; }
}
$coin += $bigget; push(@bigget, $bigget);
} elsif ($r <= $grape+$rep+$che+$bell+$jug+$big+$reg) { # REG
$flag = 1; $regcount++; $get='<b>REG</b>'; $coin += 104;
$r = int(rand(4)+1);
if ($r>1) { $coin -= 1; } # 後光り
}
if ($flag) {
$k = ($k > 0) ? $k .'k' : ' ';
$opt = ($count < 100) ? "<b><font color='blue'>" : ($count >= 500) ? "<b><font color='red'>" : '';
$opt2 = ($count < 100) ? "</font></b>" : ($count >= 500) ? "</font></b>" : '';
if ($bigcount) { $b_prob = int($g/$bigcount+0.5); $b_prob = "(1/$b_prob)"; }
if ($regcount) { $r_prob = int($g/$regcount+0.5); $r_prob = "(1/$r_prob)"; }
print "<tr align='center'><td align='right'>$opt $count $opt2</td></td><td>$get</td><td>$bigget</td><td><font size=2>$msg</font></td>";
print "<td><font color='blue'>$bigcount</font> $b_prob</td><td><font color='blue'>$regcount</font> $r_prob</td>";
print "<td>$k</td><td>$coin</td><td>$g</td></tr>\n";
$flag = $count = $out = 0; $k=''; $bigget = $msg = ' ';
}
if ($g >= $play) {
$k = ($k > 0) ? $k.'k' : ' ';
if ($bigcount) { $b_prob = int($g/$bigcount+0.5); $b_prob = "(1/$b_prob)"; }
if ($regcount) { $r_prob = int($g/$regcount+0.5); $r_prob = "(1/$r_prob)"; }
print "<tr align='center'><td align='right'>$count</td></td><td>ヤメ</td><td> </td><td> </td>";
print "<td><font color='blue'>$bigcount</font> $b_prob</td><td><font color='blue'>$regcount</font> $r_prob</td>";
print "<td>$k</td><td>$coin</td><td>$g</td></tr>\n";
last;
}
}
print '</table><br><br><br>';
# 結果の整理
$toushi = $totalk * 1000;
$kankin = int($coin*20);
$shushi = $kankin - $toushi;
$opt3 = ($shushi >= 0) ? 'blue' : 'red';
$payout = ($coin-($totalk*50))/($g*3)*100+100;
$payout = &point($payout,3);
$brcount= $bigcount + $regcount;
if ($bigcount) { $b_prob = &point(($g/$bigcount),3); $b_prob = "(1/$b_prob)"; }
if ($regcount) { $r_prob = &point(($g/$regcount),3); $r_prob = "(1/$r_prob)"; }
if ($brcount) { $br_prob = &point(($g/$brcount),3); $br_prob = "(1/$br_prob)"; }
foreach (@bigget) { $t_bigget += $_; }
$aveget = &point( ($t_bigget/$bigcount), 3 ) if $bigcount;
$coin1k = &point(($g*50/($t_bigget + $regcount*104 + $totalk*50 - $coin)), 3);
# 完全フル攻略の場合
$coin2 += $coin+$loss;
$kankin2 = int($coin2*20);
$shushi2 = $kankin2 - $toushi;
$opt4 = ($shushi2 >= 0) ? 'blue' : 'red';
$payout2 = ($coin2-($totalk*50))/($g*3)*100+100;
$payout2 = &point($payout2,3);
$coin1k2 = &point(($g*50/(($bigcount*325) + $regcount*104 + $totalk*50 - $coin2)), 3);
$coin_gap = $coin2 - $coin; if ($coin_gap>0) { $coin_gap = '+'.$coin_gap; }
$shu_gap = $shushi2 - $shushi; if ($shu_gap>0) { $shu_gap = '+'.$shu_gap; }
@play_meth = ('順押し適当', '順押しチェリー狙い', '逆押し完全小役奪取');
@big_meth = ('順押し適当', '順押しチェリー狙い', '逆押し完全小役奪取');
$play_meth_d = $play_meth[$play_meth];
$big_meth_d = $big_meth[$big_meth];
# 整理した結果と再試行ボタン、フッタの表示
print <<"__ HTML __";
<table border=1 align='center' cellpadding=3 cellspacing=0>
<tr align='center' bgcolor='#ffffcc'><td colspan=2><b>アイムジャグラー EX 設定 $s</b></font></td></tr>
<tr bgcolor='#ffffcc'><td>通常時</td><td><font size=2><b>$play_meth_d</b></font></td></tr>
<tr bgcolor='#ffffcc'><td>BIG中</td><td><font size=2><b>$big_meth_d</b></font></td></tr>
<tr><td>プレイ数</td><td align='right'> $g P</td></tr>
<tr><td><font color='red' face='Arial black'><b>777</b></font></td><td align='right'><b>$bigcount 回 <font color='red'>$b_prob</font></td></tr>
<tr><td><b>REG</b></td><td align='right'><b>$regcount 回 <font color='red'>$r_prob</font></td></tr>
<tr><td><b>BR合成</b></td><td align='right'><b>$brcount 回 <font color='red'>$br_prob</font></td></tr>
<tr><td>投資</td><td align='right'>$toushi 円</td></tr>
<tr><td>獲得枚数</td><td align='right'><b>$coin 枚</b></td></tr>
<tr><td><font size=2>BIG平均<br>獲得枚数</font></td><td align='right'><b>$aveget 枚</b></td></tr>
<tr><td>1k当たり</td><td align='right'><b>$coin1k P</b></td></tr>
<tr><td>PAYOUT</td><td align='right'><b>$payout %</b></td></tr>
<tr><td>換金</td><td align='right'>$kankin 円</td></tr>
<tr><td>収支</td><td align='right'><font color='$opt3'><b>$shushi 円</b></font></td></tr>
__ HTML __
if ($play_meth!=2 && $big_meth!=2) {
print <<"__ HTML __";
<tr align='center' bgcolor='#ffffcc'><td colspan=2><b><font size=2>逆押し完全小役狙いだった場合</font></b></td></tr>
<tr><td>獲得枚数</td><td align='right'><font size=2><b>$coin2 枚<br>(差 $coin_gap 枚)</b></font></td></tr>
<tr><td>1k当たり</td><td align='right'><font size=2><b>$coin1k2 P</b></font></td></tr>
<tr><td>PAYOUT</td><td align='right'><font size=2><b>$payout2 %</b></font></td></tr>
<tr><td>換金</td><td align='right'><font size=2>$kankin2 円</font></td></tr>
<tr><td>収支</td><td align='right'><font color='$opt4' size=2><b>$shushi2 円<br>(差 $shu_gap 円)</b></font></td></tr>
</table></center>
__ HTML __
} else { print "</table></center>\n"; }
print <<"__ HTML __";
<form action='$cginame' method='POST'>
<input type='hidden' name='s' value='$s'>
<input type='hidden' name='play' value='$play'>
<input type='hidden' name='play_meth' value='$play_meth'>
<input type='hidden' name='big_meth' value='$big_meth'>
<center><input type=submit value="再試行"></center>
</form>
<br><br>
<div align='right'>[ <a href='../simu_data_imjug.html'>data</a> / <a href='imjug_memo.html'>memo</a> / <a href='imjug.html'>source</a> ]</div>
<strong>[ <a href='../index.html'>home</a> / <a href='index.html'>cgi</a> / <a href='../jug/index.html'>juggler</a> / <a href='../column.html'>column</a> / <a href='../diary/index.html'>diary</a> / <a href='bbs.cgi'>bbs</a> / <a href='../link.html'>link</a> / <a href='../intro.html'>welcome</a> ]</strong>
</body></html>
__ HTML __
exit;
# 少数を四捨五入して指定の桁にする
sub point {
my($value, $fig, $x);
($value, $fig) = @_;
$value = int($value * (10 ** $fig) + 0.5) / (10 ** $fig);
if ($value =~ /(\d+)\.(\d+)/) { $x = $2; }
elsif ($value !~ /\./) { $x =''; $value .= '.'; }
$value = $value.'0' x ( $fig - length($x) );
return $value;
}
[ home / cgi / juggler / column / diary / bbs / link / welcome ]