jug7.com
[ home / cgi / juggler / column / diary / bbs / link / welcome ]


source : 吉宗


#!/usr/bin/perl
# 吉宗シミュレーション

$cginame  = 'yoshi.cgi';
$title    = '吉宗 シミュレーション';

print "Content-Type: text/html\n\n";

if ($ENV{'REQUEST_METHOD'} eq 'POST') {
    read (STDIN, $input, $ENV{'CONTENT_LENGTH'});

    foreach (split(/&/,$input)) {
        ($name,$value) = split(/=/, $_);
        push(@input, $value);
    }
    ($s, $play, $mode, $s_big, $s_reg, $met, $start) = @input;
    $def_sbig = $s_big;
    $def_sreg = $s_reg;
    $def_mode = $md = $mode;
    $s_big    = 50 if $s_big eq '';
    $s_reg    = 50 if $s_reg eq '';
    $def_met  = $met;
}

$rand_s = $s if $s==7; # ランダム設定
$met = 0 if !$met;
$check[$met] = 'checked';

# ヘッダとフォームの表示
print <<"__ FORM __";
<!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_yoshi.html'>data</a> / <x href='yoshi_memo.html'>memo</a> / <x href='yoshi.html'>source</a> ]</div>
<br><br><center>
<form action='$cginame' method='POST'>
<table border=0>
<tr><td>設定</td><td><input type='text' maxlength=1  name='s' size=14 value='$s'></td></tr>
<tr><td>試行ゲーム数</td><td><input type='text' size=14 name='play' maxlength=4 value='$play'></td></tr>
<tr><td>最初のモード</td><td><input type='text' size=14 name='mode' maxlength=1 value='$mode'></td></tr>
<tr><td>最初のストック数</td><td>B <input type='text' size=2 name='s_big' maxlength=3 value='$s_big'>
 R <input type='text' size=2 name='s_reg' maxlength=3 value='$s_reg'></td></tr>
<tr><td>打ち方</td><td> <input type='radio' name='method' value='0' $check[0]><font size=2>全ツッパ</font><br>
 <input type='radio' name='method' value='1' $check[1]><font size=2>565P〜。193Pヤメ</font><br>
 <input type='radio' name='method' value='2' $check[2]><font size=2>965P〜。193Pヤメ</font></td></tr>
</table><br>
<input type='submit' value="開始">
</form>
<table border=0 align='center'><tr><td>
<font size=2>設定は 1 〜 6 までの数値を入力。<br>
打ち方で全ツッパ以外を選択した場合に限り、設定7の入力ができる。(設定7 = 設定ランダム)<br>
ゾーン打ちの場合は、50%でモード1、50%でモード2が選択される。<br>
<br>
モードは 1〜3 までを入力。 <b>1</b> モード1 <b>2</b> モード2 <b>3</b> モード3(天国)<br>
モードを指定しない場合、モード1からのスタートとなる。<br>
最初のストック数はBRともに 255個 まで。ストック数が無記入の場合はそれぞれ50個にした。</font>
</td></tr></table>
</center><br>
__ FORM __


# エラーチェックとGET
if ($play > 9999)  { $error = 1; $er_msg = 'プレイ数は最大9999Pまでです。'; }
if (!$s or !$play) { $error = 1; $er_msg = '記入漏れがあります。'; }
if ($met==0 && ($s<0 or $s>6)) { $error = 1; $er_msg = '設定は 1 から 6 までです。'; }
if (!$met==0 && ($s<0 or $s>7)) { $error = 1; $er_msg = '設定は 1 から 7 までです。'; }
if ($mode<0 or $mode>3) { $error = 1; $er_msg = 'モードは 1 から 3 までです。'; }
if (grep { /[^\d]/ } ($s, $play, $s_big, $s_reg)) { $error = 1; $er_msg = '不適切な文字が記入されています。'; };
if ($s_big>255 or $s_reg>255) {  $error = 1; $er_msg = 'ストック数はBRともに255個までです。'; }

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_yoshi.html'>data</a> / <x href='yoshi_memo.html'>memo</a> / <x href='yoshi.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;
}

# データ RT振り分け
$m1[1] = $m1[2] = $m1[3] =
  '50,200,200,200,20,20,20,100,20,0,450,20,20,20,0,20,500,20,20,0,20,550,20,20,700,886';  #/4096   [ ] 内は設定
$m1[4] = $m1[5] = $m1[6] =
  '50,120,120,120,200,200,20,120,20,0,450,20,20,20,0,20,500,20,20,0,20,550,20,20,700,746';
$m2[1] = $m2[2] = $m2[3] =
  '50,250,250,250,50,50,20,100,20,450,0,20,20,20,500,20,0,20,20,550,20,0,20,450,200,746';
$m2[4] = $m2[5] = $m2[6] =
  '50,120,120,120,250,250,20,120,20,450,0,20,20,20,500,20,0,20,20,550,20,0,20,450,200,716';
$m3 = '96,750,750,750,750,1000';

@rtm1 = split(/,/, $m1[$s]);
@rtm2 = split(/,/, $m2[$s]);
@rtm3 = split(/,/, $m3);


# RTプレイ数
@blk1 = (0, 2, 34, 66, 98, 130, 194, 258, 386, 402, 502, 541, 642, 770, 802, 898, 902, 1026, 1154, 1202, 1282, 1302, 1410, 1538, 1666, 1794);
@blk2 = (1, 33, 65, 97, 129, 193, 257, 385, 513, 465, 565, 641, 769, 897, 865, 1025, 965, 1153, 1281, 1265, 1409, 1365, 1537, 1665, 1793, 1921);


# 通常時小役データ 総数は 65536
@big    = (270, 271, 272, 273, 274, 275); $big = $big[$s-1];
@reg    = (270, 271, 272, 273, 274, 275); $reg = $reg[$s-1];

$rep    = 8980;
@reprt  = (57556, 57556, 57546, 57532, 57523, 57506); $reprt = $reprt[$s-1];
$pine   = 720;
$che    = 800;
$bale   = 5900;
# 純ハズレ 20, 18, 26, 38, 45, 60

# BIG中小役確率 /65536
$big_bale     = 50584;
$big_jac      = 14564;
$big_kiiiiiin = 385;
$big_jh       = 3;
$big_jac_h    = 50;

# モード移行
$mt1[1] = '256,3456,384';  # mode1 からのモード移行 /4096
$mt1[2] = '256,3232,608';
$mt1[3] = '256,2976,864';
$mt1[4] = '256,2944,896';
$mt1[5] = '256,3008,832';
$mt1[6] = '256,2880,960';

$mt2[1] = '2720,256,1120';  # mode2 からのモード移行 /4096
$mt2[2] = '2464,256,1376';
$mt2[3] = '2624,256,1216';
$mt2[4] = '1792,256,2048';
$mt2[5] = '2496,256,1344';
$mt2[6] = '1792,256,2048';

$mt3[1] = '1760,1120,1216';  # mode3 からのモード移行 /4096
$mt3[2] = '1408,896,1792';
$mt3[3] = '1600,1280,1216';
$mt3[4] = '1696,992,1408';
$mt3[5] = '1568,1184,1344';
$mt3[6] = '1504,992,1600';

@mtr1 = split(/,/, $mt1[$s]);
@mtr2 = split(/,/, $mt2[$s]);
@mtr3 = split(/,/, $mt3[$s]);


# 放出ボーナス
$rb1[1] = '2496,1600'; # /4096
$rb1[2] = '2624,1472';
$rb1[3] = '2432,1664';
$rb1[4] = '2496,1600';
$rb1[5] = '2432,1664';
$rb1[6] = '2496,1600';

$rb2[1] = '1216,2880';
$rb2[2] = '1344,2752';
$rb2[3] = '1344,2752';
$rb2[4] = '1216,2880';
$rb2[5] = '1600,2496';
$rb2[6] = '1216,2880';

$rb3[1] = '3072,1024';
$rb3[2] = '2496,1600';
$rb3[3] = '3072,1024';
$rb3[4] = '2496,1600';
$rb3[5] = '3072,1024';
$rb3[6] = '2496,1600';

@rbs1 = split(',', $rb1[$s]);
@rbs2 = split(',', $rb2[$s]);
@rbs3 = split(',', $rb3[$s]);


$mode = 1 if !$mode;
if (($s_big or $s_reg) && !$rand_s) { $rt = &rt($mode); }
if ($start) { $rt = $start; }


if ($met==0) {
print <<"__ HTML __";
<br><br><table border=1 align='center' cellspacing=0><caption>シミュレーション結果</caption>
<tr align='center' bgcolor='#ffffcc'><td><font size=2>ゲーム数</font></td><td><font size=2>当選</font></td>
<td><font size=2>備考</font></td><td><font size=2>モード</font></td><td><font size=2>次のRT</font></td>
<td><font size=2>BIG<br>回数</font></td><td><font size=2>REG<br>回数</font></td><td><font size=2>ストック数</font></td>
<td><font size=2>投資</font></td><td><font size=2>コイン</font></td><td><font size=2>総ゲーム数</font></td></tr>
__ HTML __

} else {
print <<"__ HTML __";
<br><br><table border=1 align='center' cellspacing=0><caption>シミュレーション結果</caption>
<tr align='center' bgcolor='#ffffcc'><td><font size=2>スタート</font></td><td><font size=2>ゲーム数</font></td>
<td><font size=2>当選</font></td><td><font size=2>備考</font></td><td><font size=2>モード</font></td><td><font size=2>次のRT</font></td>
<td><font size=2>BIG<br>回数</font></td><td><font size=2>REG<br>回数</font></td><td><font size=2>ストック数</font></td>
<td><font size=2>投資</font></td><td><font size=2>コイン</font></td><td><font size=2>総ゲーム数</font></td></tr>
__ HTML __

}

#----------------------
#  シミュレート開始
#----------------------
$g = $count = $bigcount = $regcount = $coin = $ren = 0;
$che_cancel = $pine_cancel = $bonus_cancel = $jh_cancel = 0;
$mt12play = $mt12hit = $mt3play = $mt3hit = $jac_bale = 0;
$limit=1; @msg=(); $setting = 1; $start_flag = 1; $rand_count = 0;

while (1) {
    # 設定ランダムの場合の初期設定
    if (!$met==0 && $setting==1) {
        if ($rand_s) {
            $r = int(rand(6)+1);
            $s = $r;
            $rand_s_ave += $s; $rand_count++;
            @rtm1 = split(/,/, $m1[$s]);  @rtm2 = split(/,/, $m2[$s]);  @rtm3 = split(/,/, $m3);
            @mtr1 = split(/,/, $mt1[$s]); @mtr2 = split(/,/, $mt2[$s]); @mtr3 = split(/,/, $mt3[$s]);
            @rbs1 = split(',', $rb1[$s]); @rbs2 = split(',', $rb2[$s]); @rbs3 = split(',', $rb3[$s]);
            $big = $big[$s-1]; $reg = $reg[$s-1]; $reprt = $reprt[$s-1];
        }
        $s_big = 10 if !$s_big;  $s_reg = 10 if !$s_reg;
        $r = int(rand(100)+1);
        $mode = ($r<=50) ? 1 : 2;
        if ($met==1) {
            while($rt<565) { $rt = &rt($mode); }
            $rt -= 565;
        } else {
            while($rt<965) { $rt = &rt($mode); }
            $rt -=965;
        }
        $start_game = ($met==1) ? 566: 966;
        $setting = 0; $start_flag = 1;
    }


    $g++; $count++;
    if ($coin < 3) { $coin += 50; $k++; $totalk++; }
    $coin -= 3;

    if ($sp_play) { $sp_play--; } else { $sp=0; }  # 特殊制御プレイ
    if ($rt<=$count) { # RT消化
        $rt_cancel = 1;
        if ($sp_play) { $paradise = 1; $sp2 = 1; } # 特殊制御中により次回天国モード確定
        if ($sp_play>=8 && $sp>=40 && !$msg[$#msg] eq '<font size=2>チェリー解除</font>'
           && !$msg[$#msg] eq '<font size=2>松解除</font>' && !$msg[$#msg] eq '<font size=2>内部BIG解除</font>'
           && !$msg[$#msg] eq '<font size=2>内部REG解除</font>') { $hawk = 1; }
    }

    $repr = (($s_big or $s_reg) && !$rt_cancel) ? $reprt : $rep;
    $r    = int(rand(65536)+1);

    if ($r <= $repr) { # リプレイ
        if ((!$s_big && !$s_reg) or $rt_cancel) { $coin += 3; next; }
        else {
            $r = int(rand(8192)+1);
            if ($r<= 32) {  # 特殊制御へ当選の揃うリプレイ
                $coin += 3;
                if (!$sp_play) {
                    $r = int(rand(4096)+1);
                    if ($r<= 2048)   { $sp = $sp_play = 20; }
                    elsif ($r<= 768) { $sp = $sp_play = 40; }
                    elsif ($r<= 768) { $sp = $sp_play = 50; }
                    else             { $sp = $sp_play = 60; }
                    next;
                }
            } elsif ($r<= 1280) { $coin += 3; next; }
        }
    } elsif ($r <= $repr+$bale) { $coin += 10; next; } # 俵
    elsif ($r <= $repr+$bale+$che) { # che
        $coin += 4;
        $r = int(rand(4096)+1);
        if ($r<=111) { # チェリー解除当選
            $che_cancel++;
            if (($count+32 >= $rt) && !$rt_cancel) { push(@msg, "<font size=2>($count P 無駄チェリー解除)</font>"); next; }
            $r = int(rand(4)+1);
            $rt = $count + $r;
            push(@msg, '<font size=2>チェリー解除</font>');
            if ($sp_play) { $sp_play += 32; }
            next;
        }
    } elsif ($r <= $repr+$bale+$che+$pine) { # 松
        $coin += 5;
        $r = int(rand(4096)+1);
        if ($r<=25) { # 松解除当選
            $pine_cancel++;
            $paradise = 1;
            if (($count+32 >= $rt) && !$rt_cancel) { push(@msg, "<font size=2>($count P 無駄松解除。ただし次回天国)</font>"); next; }
            $rt = $count + 1;
            push(@msg, '<font color=\'red\' size=2><b><font color=\'blue\'>松</font>解除</b></font>'); next;

        }
    } elsif ($r <= $repr+$bale+$che+$pine+$big) { # 内部BIG
        if ($s_big<255) { $s_big++; }
        if ($s_big==1 && !$s_reg) { $mode=1; $rt = $count + &rt($mode); $rt_cancel=0; } # 初ストック時
        else {
            $r = int(rand(4096)+1);
            if ($r<= 165) { # 内部BIG解除
                $bonus_cancel++;
                if (($count+32 >= $rt) && !$rt_cancel) { push(@msg, "<font size=2>($count P 無駄内部BIG解除)</font>"); next; }
                $rt = $count + 3;
                push(@msg, '<font size=2>内部BIG解除</font>'); next;
                if ($sp_play) { $sp_play += 32; }
            }
        }
    } elsif ($r <= $repr+$bale+$che+$pine+$big+$reg) { # 内部REG
        if ($s_reg<255) { $s_reg++; }
        if (!$s_big && $s_reg==1) { $mode=1; $rt = $count + &rt($mode); $rt_cancel=0; } # 初ストック時
        else {
            $r = int(rand(4096)+1);
            if ($r<= 166) { # 内部REG解除
                $bonus_cancel++;
                if (($count+32 >= $rt) && !$rt_cancel) { push(@msg, "<font size=2>($count P 無駄内部REG解除)</font>"); next; }
                $rt = $count + 1;
                push(@msg, '<font size=2>内部REG解除</font>'); next;
                if ($sp_play) { $sp_play += 32; }
            }
        }
    } else { # 純ハズレ
        if ($s_big or $s_reg) { # 純ハズレ解除
            if (!$rt_cancel) {
                $jh_cancel++;
                if (($count+32 >= $rt)) { push(@msg, "<font size=2>( $count P 無駄内部純ハズレ解除)</font>"); next; }
                $rt = $count + 32;
                push(@msg, '<font color=\'red\' size=2><b>純ハズレ解除</b></font>');
                if ($sp_play) { $sp_play += 32; $hawk = 1; }
                next;
            }
        }
    }


    # RT 解除
    if ($rt_cancel) {
        $rt_cancel = 0;

        # 通常プレイから内部ストックナシでここに来てしまった場合はリターン
        if ((!$s_big && !$s_reg) && !$ren1_stock) { @msg=(); next; }

        # 放出ボーナス  0:BIG  1:REG
        $r = int(rand(4096)+1);
        if ($ren1_stock) { # BIG1P連!
            $bonus = ($s_big) ? 0 : 1;
            if ($bonus==1) { push(@msg, '<font size=2>(BIG1P連REG)</font> <font color=\'blue\'><b>ううう…</b></font>'); }
        } elsif ($s_big && $s_reg) {
            if    ($mode==1) { $bonus = ($r<= $rbs1[0]) ? 0 : 1; }
            elsif ($mode==2) { $bonus = ($r<= $rbs2[0]) ? 0 : 1; }
            else             { $bonus = ($r<= $rbs3[0]) ? 0 : 1; }
        } elsif (!$s_big) { $bonus = 1; } # REGストックのみ
        else { $bonus = 0; }              # BIGストックのみ

        if ($hawk) { push(@msg, '<font color=\'blue\' size=2>鷹狩HIT !!!</font>'); }
        if (($s_big or $s_reg) && $limit==1 && $paradise) { # 特殊条件で次回天国モード確定
            $nextmode = 3;
            if ($sp2) { push(@msg, '<font size=2 color=\'red\'>(特殊制御中解除)</font>'); }
        }

        if ($ren1_stock) { $ren1_stock--; $limit++; $ren1count++; } # 次の1P連が確定している時
        # リミッター発動
        if ($limit>=5 && $ren1_stock) { $ren1_stock=0; push(@msg, '<font size=2 color=\'red\'>BIG1P連リミッター発動…</font>'); }

        # ボーナスプレイ
        if ($bonus==0) { # BIG放出!
            $bonus = '<font color=\'blue\' face=\'Arial black\'><b>777</b></font>';
            $s_big--; $bigcount++;
            # BIG中プレイ開始
            for ($i=1; $i<=30; $i++) {
                $r = int(rand(65536)+1);
                if ($r <= $big_bale) {  } # 15枚
                elsif ($r <= $big_bale+$big_jac) { $jacin++; } # JACIN
                elsif ($r <= $big_bale+$big_jac+$big_kiiiiiin) { # 「キィィィィーン!」
                    $r = int(rand(4096)+1);
                    if ($r<= 512) { # ダブル揃い
                        $ren1_stock += 2;
                        push(@msg, '<font size=2 color=\'blue\'><b>BIG中<font color=\'red\'>ダブル揃い</font></b></font>');
                    } else {        # シングル揃い
                        $ren1_stock += 1;
                        push(@msg, '<font size=2 color=\'blue\'><b>BIG中シングル揃い</b></font>');
                    }
                } else {            # 「キィィィーン!」 衝撃の純ハズレ
                    $hazure++;
                    $ren1_stock += 3;
                    push(@msg, '<font size=2 color=\'blue\'><b>BIG中<font color=\'red\'>純ハズレ</font></b></font>');
                }
            }
            if ($jacin==0)    { $ren1_stock += 3; } # 0パン
            elsif ($jacin==1) { $ren1_stock += 2; } # 1パン
            elsif ($jacin==2) { $ren1_stock += 1; } # 2パン
            if ($jacin<3)     { push(@msg, "<font size=2 color=\'blue\'><b>BIG $jacin パン</b></font>"); }

            $jacin = 3 if $jacin>=3;
            for ($i=1; $i<=$jacin; $i++) {
                $jac_bale=0;
                for($j=1; $j<=8; $j++) {
                    $r = int(rand(65536)+1);
                    if ($r<=32743) { # 俵
                        $jac_bale++;
                    } elsif ($r<= $big_jac_h+32743) { # JACハズレ
                        $jac_h++; $j--; $jac_bale=0;
                        $ren1_stock += 1; push(@msg, '<font size=2 color=\'blue\'><b>JACハズレ</b></font>');
                    } else { $jac_bale = 0; }
                }
                if ($jac_bale==8) { $ren1_stock += 1; push(@msg, '<font size=2 color=\'blue\'><b>JAC中 自力俵8連</b></font>');}
            }

            $bigget = 711 - $hazure*15 - $jac_h*1 - (3-$jacin)*112;
            $coin  += $bigget;

        } else { # バケ放出…(;´Д`)
            $bonus = '<b>REG</b>';
            $s_reg--; $regcount++;

            for($i=1; $i<=8; $i++) {
                $r = int(rand(65536)+1);
                if ($r<=32743) { # 俵
                    $jac_bale++;
                } elsif ($r<= $big_jac_h+32743) { # JACハズレ
                    $jac_h++; $i--; $jac_bale=0;
                    $ren1_stock += 1; push(@msg, '<font size=2 color=\'blue\'><b>JACハズレ</b></font>');
                } else { $jac_bale = 0; }
            }
            if ($jac_bale==8) { $ren1_stock += 1; push(@msg, '<font size=2 color=\'blue\'><b>REG中 自力俵8連</b></font>');}

            $regget = 127 - $jac_h*1;
            $coin  += $regget;
        }

        # ストックありで初回ボーナス時ならモード移行、RTプレイ数の抽選(BIG1P連で2発目以降ならスルー)
        if (($s_big or $s_reg) && $limit==1) {
            if (!$paradise) {
                @tbl = ($mode==1) ? @mtr1 : ($mode==2) ? @mtr2 : @mtr3;

                $r = int(rand(4096)+1); $i=0; $x=$tbl[0];
                while ($r > $x) { $i++; $x += $tbl[$i]; }
                $nextmode = $i+1;

                # 天国移行率、天国ループ率(特殊条件を除く)
                if ($mode!=3) {
                    $mt12play++;
                    if ($nextmode==3) { $mt12hit++; }
                } else { 
                    $mt3play++;
                    if ($nextmode==3) { $mt3hit++; }
                }
            }
            $rt = &rt($nextmode); # 次回RTプレイ数の決定
        }
        if (!$s_big && !$s_reg && $limit==1) { $rt = 0; } # ストック無し時はRTをとりあえず 0 に。


        if ($ren1_stock && $limit==1) { # 1P連が確定した初回BIG時。RTプレイ数と次回モードを格納
            $past_mode = $mode;
            $ren1_mode = $nextmode;
            $ren1_rt = $rt; $rt = 1;
        }
        if ($ren1_stock && !$s_big && !$s_reg) { # 1P連が確定したが、ストックゼロ
            $ren1_stock=0; $mode=$past_mode; $limit=1;
            push(@msg, '<font size=2 color=\'blue\'><b>(悲しみの1P連権利消失)</font><br><font color=\'red\'>うおおおお!</b></font>');
        }
        if (!$ren1_stock && $limit>1) { # BIG1P連終了。通常プレイへ戻る場合
            $mode = $past_mode;  $nextmode = $ren1_mode;  $rt = $ren1_rt;
        }

        $k = ($k > 0) ? $k.'k' : ' ';

        $opt  = ($count < 193) ? '<b><font color=\'blue\'>' : ($count >=1000) ? '<b><font color=\'red\'>' : '';
        $optc = ($count < 193) ? '</font></b>'              : ($count >=1000) ? '</font></b>'             : '';
        if ($nextmode==3) { $opt2 = '<font color=\'red\'><b>'; $opt2c = '</b></font>'; } else { $opt2=$opt2c=''; }

        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)"; }

        $mode_d = ($ren1_stock) ? ' ' : "$mode →$opt2 $nextmode $opt2c";
        $rt_d   = ($ren1_stock or $rt==0) ? ' ' : $rt;
        $msg = ($#msg>=1) ? join('<br>', @msg) : ($#msg==0) ? $msg[0] : ' ';

        if ($met==0) {
            print "<tr align='center'><td>$opt $count $optc</td><td>$bonus</td><td>$msg</td>";
            print "<td>$mode_d</td><td>$rt_d</td><td><font color='blue'>$bigcount</font> $b_prob</td>";
            print "<td><font color='blue'>$regcount</font> $r_prob</td><td>B $s_big R $s_reg</td>";
            print "<td>$k</td><td>$coin</td><td>$g</td></tr>\n";
        } else {
            if ($start_flag==1) {
                $start_cancel = $count + $start_game - 1;
                $start_msg = "$start_game 〜 $start_cancel";
                $start_flag = 0;
            } else { $start_msg =' '; }

            print "<tr align='center'><td>$start_msg</td><td>$opt $count $optc</td><td>$bonus</td><td>$msg</td>";
            print "<td>$mode_d</td><td>$rt_d</td><td><font color='blue'>$bigcount</font> $b_prob</td>";
            print "<td><font color='blue'>$regcount</font> $r_prob</td><td>B $s_big R $s_reg</td>";
            print "<td>$k</td><td>$coin</td><td>$g</td></tr>\n";
        }
        $mode = $nextmode;
        $k = ''; $count = 0; @msg = ();
        $sp = $sp2 = $sp_play = $paradise = $hawk = 0;
        $hazure = $jac_h = $bigget = $regget = $jacin = $jac_bale = 0;
        $limit = 1 if !$ren1_stock;
    }

    if (($met==0 && $g >= $play) or (!$met==0 && $count>=193 && $start_flag==0)) {
        $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)"; }

        if ($met==0) {
            print "<tr align='center'><td>$count</td><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>B $s_big R $s_reg</td><td>$k</td><td>$coin</td><td>$g</td></tr>\n";
        } else {
            $s_d = ($rand_s) ? "<font color='red'>(設定 $s)</font>" : ' ';
            print "<tr align='center'><td>$s_d</td><td>$count</td><td>ヤメ</td><td> </font></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>B $s_big R $s_reg</td><td>$k</td><td>$coin</td><td>$g</td></tr>\n";
            if ($g < $play) { $setting = 1; $k = ''; $count = 0; next; }
        }
        last;
    }

}


# シミュデータの整理
$toushi = $totalk * 1000;
$kankin = $coin * 20;
$shushi = $kankin - $toushi;
$opt3   = ($shushi >= 0) ? 'blue' : 'red';
$payout = ($coin-($totalk * 50))/($g * 3)*100+100;
$payout = &point($payout,2);
$sp_cancel = $che_cancel + $pine_cancel + $bonus_cancel + $jh_cancel;
if ($bigcount) { $b_prob = &point(($g/$bigcount),2); $b_prob = "(1/$b_prob)"; }
if ($regcount) { $r_prob = &point(($g/$regcount),2); $r_prob = "(1/$r_prob)"; }
$che_cancel2   = &point(1/($che_cancel/$g),0)   if $che_cancel;
$pine_cancel2  = &point(1/($pine_cancel/$g),0)  if $pine_cancel;
$bonus_cancel2 = &point(1/($bonus_cancel/$g),0) if $bonus_cancel;
$jh_cancel2    = &point(1/($jh_cancel/$g),0)    if  $jh_cancel;
$sp_cancel2    = &point(1/($sp_cancel/$g),0)    if  $sp_cancel;
$ren1r         = &point(($ren1count/$bigcount*100),2) if $bigcount;
$mt12play2     = &point(($mt12hit/$mt12play*100),2) if $mt12play;
$mt3play2      = &point(($mt3hit/$mt3play*100),2)   if $mt3play;

$start  = $rt - $count;

if ($rand_s) {
    $rand_s_ave = &point(($rand_s_ave/$rand_count),2) if $rand_count;
    $s_d = "randam (平均設定 $rand_s_ave)";
    $s = 7;
} else { $s_d = $s; }

# 整理したデータ、再試行ボタン、フッタの表示
print <<"__ RESULT __";
</table><br><br>

<table border=1 align='center' cellspacing=0>
<tr align='center' bgcolor='#ffffcc'><td colspan=2><b>吉宗 設定 $s_d</b></td></tr>
<tr><td>総プレイ数</td><td align='right'>$g P</td></tr>
<tr><td><b>BIG</b></td><td align='right'><b><font color='red'>$bigcount $b_prob</font></td></tr>
<tr><td><b>REG</b></td><td align='right'><b><font color='red'>$regcount $r_prob</font></td></tr>
<tr><td colspan=2> </td></tr>
<tr><td><font size=2><b>1P連BIG放出回数</b></font></td><td align='right'><b>$ren1count / $bigcount <font color='red'>( $ren1r % )</b></font></td></tr>
<tr><td><font size=2>チェリー解除</font></td><td align='right'><b>$che_cancel 回 ( 1/$che_cancel2 )</b></td></tr>
<tr><td><font size=2>松解除</font></td><td align='right'><b>$pine_cancel 回 ( 1/$pine_cancel2 )</b></td></tr>
<tr><td><font size=2>内部ボーナス解除</font></td><td align='right'><b>$bonus_cancel 回 ( 1/$bonus_cancel2 )</b></td></tr>
<tr><td><font size=2><b>純ハズレ解除</b></font></td><td align='right'><b>$jh_cancel 回 <font color='red'>( 1/$jh_cancel2 )</b></font></td></tr>
<tr><td><font size=2><b>特定役解除 合計</b></font></td><td align='right'><b>$sp_cancel 回 <font color='red'>( 1/$sp_cancel2 )</b></font></td></tr>
<tr><td><font size=2><b>モード3 移行率(特殊条件除く)</b></font></td><td align='right'><b>$mt12hit / $mt12play <font color='red'>( $mt12play2 % )</b></font></td></tr>
<tr><td><font size=2><b>モード3 ループ率(特殊条件除く)</b></font></td><td align='right'><b>$mt3hit / $mt3play <font color='red'>( $mt3play2 % )</b></font></td></tr>
<tr><td colspan=2> </td></tr>
<tr><td>投資</td><td align='right'>$toushi 円</td></tr>
<tr><td>獲得枚数</td><td align='right'><b>$coin 枚</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>
<tr><td>PAYOUT</td><td align='right'><b>$payout %</b></td></tr>
</table>

<br><br><table border=0 align='center' cellspacing=5>
<tr valign='bottom'><td>
<form action='$cginame' method='POST'>
<input type='hidden' name='s' value='$s'>
<input type='hidden' name='play' value='$play'>
<input type='hidden' name='mode' value='$def_mode'>
<input type='hidden' name='s_big' value='$def_sbig'>
<input type='hidden' name='s_reg' value='$def_sreg'>
<input type='hidden' name='method' value='$def_met'>
<input type='submit' value="再試行">
</form></td><td>

<form action='$cginame' method='POST'>
<input type='hidden' name='s' value='$s'>
<input type='hidden' name='play' value='$play'>
<input type='hidden' name='mode' value='$mode'>
<input type='hidden' name='s_big' value='$s_big'>
<input type='hidden' name='s_reg' value='$s_reg'>
<input type='hidden' name='method' value='$def_met'>
<input type='hidden' name='start' value='$start'>
<input type='submit' value="再試行2(据え置き)">
</form></td><td>

<form action='$cginame' method='POST'>
設定<input type='text' name='s' size=3 value='$s'><br>
<input type='hidden' name='play' value='$play'>
<input type='hidden' name='mode' value='1'>
<input type='hidden' name='s_big' value='$s_big'>
<input type='hidden' name='s_reg' value='$s_reg'>
<input type='hidden' name='method' value='$def_met'>
<input type='submit' value="再試行3(設定変更)">
</form></td></tr></table>

<br><br><br><br>
<div align='right'>[ <a href='../simu_data_yoshi.html'>data</a> / <x href='yoshi_memo.html'>memo</a> / <x href='yoshi.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>
__ RESULT __


exit;

# RT 決定
sub rt {
    my($mode,@tbl,$i,$r,$x,$rt);
    ($mode) = @_;

    @tbl = ($mode==1) ? @rtm1 : ($mode==2) ? @rtm2 : @rtm3;

    $i = 0; $x = $tbl[0];
    $r = int(rand(4096)+1);
    while ($r > $x) { $i++; $x += $tbl[$i]; }
    $rt = &rtset($blk1[$i], $blk2[$i]);
    return $rt;
}

# 引数2つの間のランダムな整数を返す
sub rtset {
    local($y,$r,$a,$b);
    ($a,$b) = @_;
    $y = $b - $a;
    $r = int(rand($y)+1) + $a;
    return $r;
}

# 少数を四捨五入して指定の桁にする
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 !~ /\./ && $fig !=0) { $x =''; $value .= '.'; }
    $value = $value.'0' x ( $fig - length($x) );
    return $value;
}


[ home / cgi / juggler / column / diary / bbs / link / welcome ]