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


source : ジャグラー 設定信頼度 2


#!/usr/bin/perl
# ジャグラー 設定配分状況、打ち手の狙う設定とGET率を加味したデータからの設定信頼度

$cginame = 'js2.cgi';
$title   = 'ジャグラー データからの設定信頼度 2';

if ($ENV{'REQUEST_METHOD'} eq 'POST') {
    read (STDIN, $input, $ENV{'CONTENT_LENGTH'});
}
foreach $str (split(/&/,$input)) {
    ($name,$value) = split(/=/, $str);
    push(@input, $value);
}
($play, $big, $reg, $distr, $target, $get) = @input;

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'>
<hr>
<b>$title</b><br>
<form action='$cginame' method='POST'>
プレイ数 <input type='text' size=6 name='play' maxlength=4 value='$play'><br>
BIG    <input type='text' size=3 name='big' maxlength=4 value='$big'><br>
REG    <input type='text' size=3 name='reg' maxlength=4 value='$reg'><br>
設定状況 <input type='text' size=20 name='distr' maxlength=15 value='$distr'><br>
狙う設定 <input type='text' size=3 name='target' maxlength=6 value='$target'><br>
GET率  <input type='text' size=3 name='get' maxlength=3 value='$get'><br>

<input type='submit' value="開始">
<br><br><a href=\'js2_comment.html\'>使用説明</a>
</form>
__ HTML __


# エラーチェックとGET送信
if ($ENV{'REQUEST_METHOD'} ne 'POST') {
    print '<a href=\'../index.html\'>top へ戻る</a>',"\n",'</body></html>';
    exit;
}
if($play > 9999) {
    print '<center><font size=4 color=\'red\'><b>ERROR ! (記入漏れがあります。)</b></font></center>';
    print '<a href=\'../index.html\'>top へ戻る</a>',"\n",'</body></html>';
    exit;
}

@distr = split(//, $distr);
for ($i=0; $i<=$#distr; $i++) {
    if ($distr[$i]==1)    { $distr2[0]++; }
    elsif ($distr[$i]==2) { $distr2[1]++; }
    elsif ($distr[$i]==3) { $distr2[2]++; }
    elsif ($distr[$i]==4) { $distr2[3]++; }
    elsif ($distr[$i]==5) { $distr2[4]++; }
    elsif ($distr[$i]==6) { $distr2[5]++; }
}

@target = split(//, $target);

for (@distr) {
    if (!($_>=0 && $_<=6)) {
        print '<center><font size=4 color=\'red\'><b>ERROR ! (設定は1〜6まで)</b></font></center>';
        print '<a href=\'../index.html\'>top へ戻る</a>',"\n",'</body></html>';
        exit;
    }
}
for (@target) {
    if (!($_>=0 && $_<=6)) {
        print '<center><font size=4 color=\'red\'><b>ERROR ! (設定は1〜6まで)</b></font></center>';
        print '<a href=\'../index.html\'>top へ戻る</a>',"\n",'</body></html>';
        exit;
    }
}

# jug data
$rand = 16384;
@big = (55, 60, 63, 67, 68, 68); # /16384
@reg = (25, 26, 27, 30, 35, 45);

#------------
#  計算開始
#------------
$big = 0 if !$big;
$reg = 0 if !$reg;

$bp  = &point(($play/$big), 2) if $big;
$rp  = &point(($play/$reg), 2) if $reg;
$br  = $big + $reg;
$brp = &point(($play/$br), 2) if $br;

for ($i=0; $i<=5; $i++) {
    $p1 = ($big[$i]/$rand)**$big * (1-$big[$i]/$rand)**($play-$big);
    $p2 = ($reg[$i]/$rand)**$reg * (1-$reg[$i]/$rand)**($play-$reg);
    $p3 = $p1 * $p2;

    $t_bigp += $p1; push(@bigp,$p1);
    $t_regp += $p2; push(@regp,$p2);
    $t_brp  += $p3; push(@brp, $p3);
}

# 設定配分状況を加味する
if ($distr) {
    $t_bigp = $t_regp = $t_brp = 0;
    for ($i=0; $i<=5; $i++) {
        $bigp[$i] = ($bigp[$i]*$distr2[$i]/($#distr+1));
        $regp[$i] = ($regp[$i]*$distr2[$i]/($#distr+1));
        $brp[$i]  = ($brp[$i] *$distr2[$i]/($#distr+1));

        $t_bigp += $bigp[$i]; 
        $t_regp += $regp[$i]; 
        $t_brp  += $brp[$i]; 
    }
}

# 狙う設定とGET率を加味する
if ($target) {
    $t_bigp = $t_regp = $t_brp = 0;

    for ($i=0; $i<=5; $i++) {
        for (@target) {
            if ($_ == ($i+1)) { $flag = 1; last; } else { $flag = 0; }
        }

        if ($flag) {
            $bigp[$i] = $bigp[$i]*$get/($#target+1); 
            $regp[$i] = $regp[$i]*$get/($#target+1);
            $brp[$i]  = $brp[$i] *$get/($#target+1);
        } else {
            $bigp[$i] = $bigp[$i]*(100-$get)/(6-$#target+1);
            $regp[$i] = $regp[$i]*(100-$get)/(6-$#target+1);
            $brp[$i]  = $brp[$i] *(100-$get)/(6-$#target+1);
        }
        $t_bigp += $bigp[$i]; 
        $t_regp += $regp[$i]; 
        $t_brp  += $brp[$i]; 
    }
}


# 百分率にする
for ($i=0; $i<=5; $i++) {
    $per1 = &point(($bigp[$i]/$t_bigp*100),2) if $t_bigp;
    $per2 = &point(($regp[$i]/$t_regp*100),2) if $t_regp;
    $per3 = &point(($brp[$i]/ $t_brp*100), 2) if $t_brp;

    push(@nb,$per1);
    push(@nr,$per2);
    push(@nbr,$per3);
}

# 結果の表示
print '<br>',"<b>BR合成</b> (1/$brp)<br>",'BRからの設定信頼度<br>';
for ($i=1; $i<=6; $i++) { print "設 $i -> $nbr[$i-1] %<br>\n"; }

print '<br>',"BIG $big 回 (1/$bp)<br>",'BIG からの設定信頼度<br>';
for ($i=1; $i<=6; $i++) { print "設 $i -> $nb[$i-1] %<br>\n"; }

print '<br>',"REG $reg 回 (1/$rp)<br>",'REG からの設定信頼度<br>';
for ($i=1; $i<=6; $i++) { print "設 $i -> $nr[$i-1] %<br>\n"; }

print '<br><br><a href=\'../index.html\'>top へ戻る</a><hr></body></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 ]