お尋ね致します。
Re:お尋ね致します。
結局、何が知りたいのでしょうか?
>>今現在、ホームページにて推測ツールなるCGIを公開していますが、一部でうまく計算されない箇所があり、悩んでいます。
1:推測ツールって何を推測するものですか?
2:CGIは何を利用して組んでいますか?(例えばPerlとか…)
3:うまく計算されない箇所があると言われても、これだけでは何の事か検討もつきません。
>>今現在、ホームページにて推測ツールなるCGIを公開していますが、一部でうまく計算されない箇所があり、悩んでいます。
1:推測ツールって何を推測するものですか?
2:CGIは何を利用して組んでいますか?(例えばPerlとか…)
3:うまく計算されない箇所があると言われても、これだけでは何の事か検討もつきません。
Re:お尋ね致します。
> 私自身プログラムを組める技量が無いので
ご自身でプログラミングを習得しようというのならともかく、そうでないならこの掲示板で質問しても無駄です。
詳しいことが分からないので対応可能かどうかは断定できませんが、修正を希望されるのであれば詳しい情報をご連絡ください。見積もりを出します。
ご自身でプログラミングを習得しようというのならともかく、そうでないならこの掲示板で質問しても無駄です。
詳しいことが分からないので対応可能かどうかは断定できませんが、修正を希望されるのであれば詳しい情報をご連絡ください。見積もりを出します。
Re:お尋ね致します。
ご返信頂きまして有難う御座います。
推測ツールというのはパチスロの設定判別に使用するツールになります。
ベースになるCGIは無料でソースを公開しているサイトから管理人様の許可を得て使用しています。
メールアドレスを登録致しましたので、こちらにご連絡頂ければ、CGIのソースを送りますので、見積もりをお願い致します。
推測ツールというのはパチスロの設定判別に使用するツールになります。
ベースになるCGIは無料でソースを公開しているサイトから管理人様の許可を得て使用しています。
メールアドレスを登録致しましたので、こちらにご連絡頂ければ、CGIのソースを送りますので、見積もりをお願い致します。
Re:お尋ね致します。
> 結局、何が知りたいのでしょうか?
>
> >>今現在、ホームページにて推測ツールなるCGIを公開していますが、一部でうまく計算されない箇所があり、悩んでいます。
>
> 1:推測ツールって何を推測するものですか?
> 2:CGIは何を利用して組んでいますか?(例えばPerlとか…)
> 3:うまく計算されない箇所があると言われても、これだけでは何の事か検討もつきません。
>
説明不足ですいません。
パチスロの設定判別ツールなのですが、分母の数値が1/7とかのデータを試行回数を何千ゲームに設定して計算すると計算してくれなくなる為、結果が表示されなくなるのです。
少ない試行回数なら計算はしてくれますので、結果が表示されます。
>
> >>今現在、ホームページにて推測ツールなるCGIを公開していますが、一部でうまく計算されない箇所があり、悩んでいます。
>
> 1:推測ツールって何を推測するものですか?
> 2:CGIは何を利用して組んでいますか?(例えばPerlとか…)
> 3:うまく計算されない箇所があると言われても、これだけでは何の事か検討もつきません。
>
説明不足ですいません。
パチスロの設定判別ツールなのですが、分母の数値が1/7とかのデータを試行回数を何千ゲームに設定して計算すると計算してくれなくなる為、結果が表示されなくなるのです。
少ない試行回数なら計算はしてくれますので、結果が表示されます。
Re:お尋ね致します。
見積もりを出すということは修正にお金がいるということだと思うのですが・・。
多分たかぎさんはボランティアで回答している人の回答をきちんと受けたいのなら規約を守ってきちんと質問して下さいよということが仰りたいのだと思います。
「うまくできないんです」という質問は大抵回答に困るのです。
何の情報もわからないのですから。
後から付け加えられた情報も少なすぎてわからないです。
具体的な説明が難しいならソースコードが無いと無理だと思います。
例えば医者に見てもらうとき、のどを見てもらうことも、聴診器をあてることも、問診表を書くことも何もせず、
全く情報を医者に与えない状態で、
「体調が悪いんです。どこがいけないのですか?」
と聞いたって医者はわかるはずありませんよね。
それと同じです。
スロットさんが回答する立場だと思って質問文を考えてみて下さい。
質問の仕方が解らない時は規約のテンプレを使って下さい。
> 私自身プログラムを組める技量が無いので
これは例えバグが発生している部分の指摘を受けられたとしても自分で解決出来ないということでしょうか?
多分たかぎさんはボランティアで回答している人の回答をきちんと受けたいのなら規約を守ってきちんと質問して下さいよということが仰りたいのだと思います。
「うまくできないんです」という質問は大抵回答に困るのです。
何の情報もわからないのですから。
後から付け加えられた情報も少なすぎてわからないです。
具体的な説明が難しいならソースコードが無いと無理だと思います。
例えば医者に見てもらうとき、のどを見てもらうことも、聴診器をあてることも、問診表を書くことも何もせず、
全く情報を医者に与えない状態で、
「体調が悪いんです。どこがいけないのですか?」
と聞いたって医者はわかるはずありませんよね。
それと同じです。
スロットさんが回答する立場だと思って質問文を考えてみて下さい。
質問の仕方が解らない時は規約のテンプレを使って下さい。
> 私自身プログラムを組める技量が無いので
これは例えバグが発生している部分の指摘を受けられたとしても自分で解決出来ないということでしょうか?
お尋ね致します。
管理人 様
プログラムを自分で組める様になりたい気持ちはあります。
与えられたプログラムを自分で編集したり、判らないなりに努力していますが、知識や技量が無い為、どの様に修正すれば良いのか判らないので質問してみました。
管理人さんの言う様にソースと症状の説明がないと質問された方も困りますね^^;
申し訳ありません。
下記のソースで
@big = ('327', '318', '309', '300', '292', '284'); # 1/x
@reg = ('682', '630', '585', '546', '512', '481');
の部分が参照する元の数値になりますが、この数値を10桁、1桁の数値に置き換えると計算してくれなくなり、
設定~の確率が何%と表示されなくなります。
分母の数値が小さくなるとオーバーフローを起こして計算しなくなると云われた事がありましたが、どの様な計算式に組み直せば良いのか判らず、ご指導頂きたく書き込み致しました。
#!/usr/bin/perl
# ゴールドシオ(シオラー2) 二項分布によるデータのみからの設定信頼度
$cginame = 'goldshio.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) = @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>ゴールドシオ(シオラー2)設定判別 $title</title>
<style type="text/css"> <!--
A:hover {color:#ff0000;}
--></style>
</head>
<body text='#000000' bgcolor='#ffffff' link='#0000ff' alink='#ff0000' vlink='#0000cc'>
<hr>
$title
<form action='$cginame' method='POST'>
プレイ数
<input type='text' size=6 name='play' maxlength=5 value='$play'><hr>
BIG
<input type='text' size=6 name='big' maxlength=4 value='$big'>
REG
<input type='text' size=6 name='reg' maxlength=4 value='$reg'><hr>
<input type='submit' value="開始">
</form>
全設定が均等に設置という仮定のもとに計算。
__ HTML __
# エラーチェックとGET送信
if ($ENV{'REQUEST_METHOD'} ne 'POST') {
print '[url]\'../i/index.htm\'[/url]',"\n",'</body></html>';
exit;
}
if($play > 99999) {
print '<center>ERROR ! (プレイ数制限)</center>';
print '[url]\'../i/index.htm\'[/url]',"\n",'</body></html>';
exit;
}
# goldshio data
@big = ('327', '318', '309', '300', '292', '284'); # 1/x
@reg = ('682', '630', '585', '546', '512', '481');
#------------
# 計算開始
#------------
$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 = (1/$big[$i])**$big * (1-1/$big[$i])**($play-$big);
$p2 = (1/$reg[$i])**$reg * (1-1/$reg[$i])**($play-$reg);
$p3 = $p1 * $p2;
$t_bigp += $p1; push(@bigp,$p1);
$t_regp += $p2; push(@regp,$p2);
$t_brp += $p3; push(@brp, $p3);
}
# 百分率にする
for ($i=0; $i<=5; $i++) {
if ($t_bigp){
$per1 = &point(($bigp[$i]/$t_bigp*100),2);
}else{
$per1 = 0;
}
if ($t_regp){
$per2 = &point(($regp[$i]/$t_regp*100),2);
}else{
$per2 = 0;
}
if ($t_brp){
$per3 = &point(($brp[$i]/$t_brp*100),2);
}else{
$per3 = 0;
}
push(@nb,$per1);
push(@nr,$per2);
push(@nbr,$per3);
}
# 結果の表示
print '
',"BR合成 (1/$brp)
",'BRからの設定信頼度
';
for ($i=1; $i<=6; $i++) { print "設 $i -> $nbr[$i-1] %
\n"; }
print '
',"BIG $big 回 (1/$bp)
",'BIG からの設定信頼度
';
for ($i=1; $i<=6; $i++) { print "設 $i -> $nb[$i-1] %
\n"; }
print '
',"REG $reg 回 (1/$rp)
",'REG からの設定信頼度
';
for ($i=1; $i<=6; $i++) { print "設 $i -> $nr[$i-1] %
\n"; }
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;
}
プログラムを自分で組める様になりたい気持ちはあります。
与えられたプログラムを自分で編集したり、判らないなりに努力していますが、知識や技量が無い為、どの様に修正すれば良いのか判らないので質問してみました。
管理人さんの言う様にソースと症状の説明がないと質問された方も困りますね^^;
申し訳ありません。
下記のソースで
@big = ('327', '318', '309', '300', '292', '284'); # 1/x
@reg = ('682', '630', '585', '546', '512', '481');
の部分が参照する元の数値になりますが、この数値を10桁、1桁の数値に置き換えると計算してくれなくなり、
設定~の確率が何%と表示されなくなります。
分母の数値が小さくなるとオーバーフローを起こして計算しなくなると云われた事がありましたが、どの様な計算式に組み直せば良いのか判らず、ご指導頂きたく書き込み致しました。
#!/usr/bin/perl
# ゴールドシオ(シオラー2) 二項分布によるデータのみからの設定信頼度
$cginame = 'goldshio.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) = @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>ゴールドシオ(シオラー2)設定判別 $title</title>
<style type="text/css"> <!--
A:hover {color:#ff0000;}
--></style>
</head>
<body text='#000000' bgcolor='#ffffff' link='#0000ff' alink='#ff0000' vlink='#0000cc'>
<hr>
$title
<form action='$cginame' method='POST'>
プレイ数
<input type='text' size=6 name='play' maxlength=5 value='$play'><hr>
BIG
<input type='text' size=6 name='big' maxlength=4 value='$big'>
REG
<input type='text' size=6 name='reg' maxlength=4 value='$reg'><hr>
<input type='submit' value="開始">
</form>
全設定が均等に設置という仮定のもとに計算。
__ HTML __
# エラーチェックとGET送信
if ($ENV{'REQUEST_METHOD'} ne 'POST') {
print '[url]\'../i/index.htm\'[/url]',"\n",'</body></html>';
exit;
}
if($play > 99999) {
print '<center>ERROR ! (プレイ数制限)</center>';
print '[url]\'../i/index.htm\'[/url]',"\n",'</body></html>';
exit;
}
# goldshio data
@big = ('327', '318', '309', '300', '292', '284'); # 1/x
@reg = ('682', '630', '585', '546', '512', '481');
#------------
# 計算開始
#------------
$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 = (1/$big[$i])**$big * (1-1/$big[$i])**($play-$big);
$p2 = (1/$reg[$i])**$reg * (1-1/$reg[$i])**($play-$reg);
$p3 = $p1 * $p2;
$t_bigp += $p1; push(@bigp,$p1);
$t_regp += $p2; push(@regp,$p2);
$t_brp += $p3; push(@brp, $p3);
}
# 百分率にする
for ($i=0; $i<=5; $i++) {
if ($t_bigp){
$per1 = &point(($bigp[$i]/$t_bigp*100),2);
}else{
$per1 = 0;
}
if ($t_regp){
$per2 = &point(($regp[$i]/$t_regp*100),2);
}else{
$per2 = 0;
}
if ($t_brp){
$per3 = &point(($brp[$i]/$t_brp*100),2);
}else{
$per3 = 0;
}
push(@nb,$per1);
push(@nr,$per2);
push(@nbr,$per3);
}
# 結果の表示
print '
',"BR合成 (1/$brp)
",'BRからの設定信頼度
';
for ($i=1; $i<=6; $i++) { print "設 $i -> $nbr[$i-1] %
\n"; }
print '
',"BIG $big 回 (1/$bp)
",'BIG からの設定信頼度
';
for ($i=1; $i<=6; $i++) { print "設 $i -> $nb[$i-1] %
\n"; }
print '
',"REG $reg 回 (1/$rp)
",'REG からの設定信頼度
';
for ($i=1; $i<=6; $i++) { print "設 $i -> $nr[$i-1] %
\n"; }
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;
}
Re:お尋ね致します。
> 多分たかぎさんはボランティアで回答している人の回答をきちんと受けたいのなら規約を守ってきちんと質問して下さいよということが仰りたいのだと思います。
基本的にはそうです。丸投げは禁止ですので。
いずれにせよ、PerlやCGIに関して、入門書の一冊でも読んで、その内容を一通り実践した上で、分からないところを分かるようにする目的で質問するならともかく、単に結果が欲しいだけなら掲示板上で解決するのは無理です。
そうはいっても、結果が必要な状況は理解できます。
その場合は、お金を払って解決するしかありませんよね。
私もその手の仕事を受ける業者ですので、違法なことや公序良俗に反することでない限り、頼まれればお引き受けします。
ただし、まともに費用がかかりますので、必ずしも安くはありません。
基本的にはそうです。丸投げは禁止ですので。
いずれにせよ、PerlやCGIに関して、入門書の一冊でも読んで、その内容を一通り実践した上で、分からないところを分かるようにする目的で質問するならともかく、単に結果が欲しいだけなら掲示板上で解決するのは無理です。
そうはいっても、結果が必要な状況は理解できます。
その場合は、お金を払って解決するしかありませんよね。
私もその手の仕事を受ける業者ですので、違法なことや公序良俗に反することでない限り、頼まれればお引き受けします。
ただし、まともに費用がかかりますので、必ずしも安くはありません。
Re:お尋ね致します。
ご返信頂きまして有難う御座います。
仰るとおりだと思います。
今までCGIやプログラム等に縁の遠い仕事ばかりしていたもので、書店等にCGIやperlの本を見に行っても内容が理解しにくいと言うか…自分の知りたい情報がどの様な書籍に紹介されているのかも判らないので「こういう本を参考に勉強して下さい」と言う様なアドバイスでも頂けると幸いです。
仰るとおりだと思います。
今までCGIやプログラム等に縁の遠い仕事ばかりしていたもので、書店等にCGIやperlの本を見に行っても内容が理解しにくいと言うか…自分の知りたい情報がどの様な書籍に紹介されているのかも判らないので「こういう本を参考に勉強して下さい」と言う様なアドバイスでも頂けると幸いです。
Re:お尋ね致します。
書籍の選び方、というのが今の質問内容ですね?
Amazonの書評などは当然参考にしていると仮定しての回答です。
私はPerlの経験はありませんが、プログラムの全くの初心者が独学でそこそこのレベル
(スロットさんが現在持つ問題を解決できるレベル)に到達するには、
2週間から2ヶ月程度のフルタイム(8時間/日、5日/週)の期間が
目安として必要ではないかと思います。
問題のレベルについての私の憶測が大きく外れている可能性もある他、
本人の適性によっては半日で十分な人もいるかもしれません。
逆に、10年でも無理な人は確実にいます、それも多数。
目先の問題だけ考えるなら、つてを頼ってお金で解決するほうが多分安上がりです。
それでも自分で解決したいという場合の話ですが、
一般論として万人向けの書籍は、まず存在しません。
私の場合、その分野の本を何十冊も立ち読みして、
今の自分にあったものを選ぶことが多いです。
一冊失敗だったとしても、より良い本を選ぶためのスキルが上がったと考えましょう。
Amazonの書評などは当然参考にしていると仮定しての回答です。
私はPerlの経験はありませんが、プログラムの全くの初心者が独学でそこそこのレベル
(スロットさんが現在持つ問題を解決できるレベル)に到達するには、
2週間から2ヶ月程度のフルタイム(8時間/日、5日/週)の期間が
目安として必要ではないかと思います。
問題のレベルについての私の憶測が大きく外れている可能性もある他、
本人の適性によっては半日で十分な人もいるかもしれません。
逆に、10年でも無理な人は確実にいます、それも多数。
目先の問題だけ考えるなら、つてを頼ってお金で解決するほうが多分安上がりです。
それでも自分で解決したいという場合の話ですが、
一般論として万人向けの書籍は、まず存在しません。
私の場合、その分野の本を何十冊も立ち読みして、
今の自分にあったものを選ぶことが多いです。
一冊失敗だったとしても、より良い本を選ぶためのスキルが上がったと考えましょう。
Re:お尋ね致します。
自分のHPでCGI公開してるのに、自分がCGI組む能力が無いというのはよくわかりませんね。
後ここはCGI掲示板ではないので、回答が集まらなくても仕方ないかと。
後ここはCGI掲示板ではないので、回答が集まらなくても仕方ないかと。
Re:お尋ね致します。
if($play > 99999)
とプレイ数が大きい時に終了するようにプログラムされています。
これはサーバー負荷がかからないようにするためでして
あまり適当に大きくしてはいけないように思います。
とプレイ数が大きい時に終了するようにプログラムされています。
これはサーバー負荷がかからないようにするためでして
あまり適当に大きくしてはいけないように思います。
Re:お尋ね致します。
はじめまして。 少々気になったので書き込ませて頂きます。
ご本人も分かっていると思いますが、
このCGIはプレイ回数、プレイ回数中に BIG or REG を引いた回数を指定して
パチスロ台の各設定確率を出すプログラムです。
1000回のプレイでBIGを1回 REGを2回引いたとすると
設 1 -> 18.34 %
設 2 -> 17.95 %
設 3 -> 17.30 %
設 4 -> 16.43 %
設 5 -> 15.51 %
設 6 -> 14.46 % となり、
その台が設定6の台である確率が14.46% といった計算をしているわけです。
そして以下のデータはおそらく左から設定1の場合の平均プレイ回数を表しています。
@big = ('327', '318', '309', '300', '292', '284'); # 1/x
@reg = ('682', '630', '585', '546', '512', '481');
という事は通常この値を一桁や二桁にする必要は無い訳ですが、
まぁそれは置いといて、
まず入力した数値は
<input type='text' size=6 name='play' maxlength=5 value='$play'>
<input type='text' size=6 name='big' maxlength=4 value='$big'>
<input type='text' size=6 name='reg' maxlength=4 value='$reg'>
この部分で $play $big $reg に値が入ります。
配列宣言している名前と同じですが別のデータです。
普通違う名前にするもんですが、
仕方が無いので [/url] が付くか付かないかで判別します。
配列は $i=0; $big[$i]; の場合
$big[0] で、$big[0]の値は 327 となります。
$big[1] で、$big[1]の値は 318
$big[2] で、$big[2]の値は 309
以下を見れば数値がどのように対応しているかわかりますね?
@big = ('327', '318', '309', '300', '292', '284'); # 1/x
後の #計算開始 以降は四則計算を行っているだけですので。
+= や / * の意味を学んでください。
どんな計算を行っているかが分かれば、
なぜ欲しい結果が得られないか導き出せると思います。
ご本人も分かっていると思いますが、
このCGIはプレイ回数、プレイ回数中に BIG or REG を引いた回数を指定して
パチスロ台の各設定確率を出すプログラムです。
1000回のプレイでBIGを1回 REGを2回引いたとすると
設 1 -> 18.34 %
設 2 -> 17.95 %
設 3 -> 17.30 %
設 4 -> 16.43 %
設 5 -> 15.51 %
設 6 -> 14.46 % となり、
その台が設定6の台である確率が14.46% といった計算をしているわけです。
そして以下のデータはおそらく左から設定1の場合の平均プレイ回数を表しています。
@big = ('327', '318', '309', '300', '292', '284'); # 1/x
@reg = ('682', '630', '585', '546', '512', '481');
という事は通常この値を一桁や二桁にする必要は無い訳ですが、
まぁそれは置いといて、
まず入力した数値は
<input type='text' size=6 name='play' maxlength=5 value='$play'>
<input type='text' size=6 name='big' maxlength=4 value='$big'>
<input type='text' size=6 name='reg' maxlength=4 value='$reg'>
この部分で $play $big $reg に値が入ります。
配列宣言している名前と同じですが別のデータです。
普通違う名前にするもんですが、
仕方が無いので [/url] が付くか付かないかで判別します。
配列は $i=0; $big[$i]; の場合
$big[0] で、$big[0]の値は 327 となります。
$big[1] で、$big[1]の値は 318
$big[2] で、$big[2]の値は 309
以下を見れば数値がどのように対応しているかわかりますね?
@big = ('327', '318', '309', '300', '292', '284'); # 1/x
後の #計算開始 以降は四則計算を行っているだけですので。
+= や / * の意味を学んでください。
どんな計算を行っているかが分かれば、
なぜ欲しい結果が得られないか導き出せると思います。
Re:お尋ね致します。
> はじめまして。 少々気になったので書き込ませて頂きます。
>
> ご本人も分かっていると思いますが、
> このCGIはプレイ回数、プレイ回数中に BIG or REG を引いた回数を指定して
> パチスロ台の各設定確率を出すプログラムです。
>
> 1000回のプレイでBIGを1回 REGを2回引いたとすると
> 設 1 -> 18.34 %
> 設 2 -> 17.95 %
> 設 3 -> 17.30 %
> 設 4 -> 16.43 %
> 設 5 -> 15.51 %
> 設 6 -> 14.46 % となり、
> その台が設定6の台である確率が14.46% といった計算をしているわけです。
> そして以下のデータはおそらく左から設定1の場合の平均プレイ回数を表しています。
>
> @big = ('327', '318', '309', '300', '292', '284'); # 1/x
> @reg = ('682', '630', '585', '546', '512', '481');
>
> という事は通常この値を一桁や二桁にする必要は無い訳ですが、
> まぁそれは置いといて、
>
> まず入力した数値は
> <input type='text' size=6 name='play' maxlength=5 value='$play'>
> <input type='text' size=6 name='big' maxlength=4 value='$big'>
> <input type='text' size=6 name='reg' maxlength=4 value='$reg'>
> この部分で $play $big $reg に値が入ります。
>
> 配列宣言している名前と同じですが別のデータです。
> 普通違う名前にするもんですが、
>
> 仕方が無いので [/url] が付くか付かないかで判別します。
> 配列は $i=0; $big[$i]; の場合
> $big[0] で、$big[0]の値は 327 となります。
> $big[1] で、$big[1]の値は 318
> $big[2] で、$big[2]の値は 309
> 以下を見れば数値がどのように対応しているかわかりますね?
> @big = ('327', '318', '309', '300', '292', '284'); # 1/x
>
> 後の #計算開始 以降は四則計算を行っているだけですので。
> += や / * の意味を学んでください。
> どんな計算を行っているかが分かれば、
> なぜ欲しい結果が得られないか導き出せると思います。
仰る通りパチスロ台の各設定確率を出すプログラムになります。
'327', '318', '309', '300', '292', '284'の数値はメーカーが発表している設定別のBIGボーナス当選確率になります。
この場合は分母の数値が大きいので現在のプログラムで問題なく計算してくれます。
BIGボーナスの数値の部分を通常時の小役確率(例えばベルやスイカ)等に置き換えようとすると分母が小さくなります(1/7とか1/8.5等)
分母が小さくなった際に下記の部分が表示されなくなります。
設 1 -> %
設 2 -> %
設 3 -> %
設 4 -> %
設 5 -> %
設 6 -> %
>
> ご本人も分かっていると思いますが、
> このCGIはプレイ回数、プレイ回数中に BIG or REG を引いた回数を指定して
> パチスロ台の各設定確率を出すプログラムです。
>
> 1000回のプレイでBIGを1回 REGを2回引いたとすると
> 設 1 -> 18.34 %
> 設 2 -> 17.95 %
> 設 3 -> 17.30 %
> 設 4 -> 16.43 %
> 設 5 -> 15.51 %
> 設 6 -> 14.46 % となり、
> その台が設定6の台である確率が14.46% といった計算をしているわけです。
> そして以下のデータはおそらく左から設定1の場合の平均プレイ回数を表しています。
>
> @big = ('327', '318', '309', '300', '292', '284'); # 1/x
> @reg = ('682', '630', '585', '546', '512', '481');
>
> という事は通常この値を一桁や二桁にする必要は無い訳ですが、
> まぁそれは置いといて、
>
> まず入力した数値は
> <input type='text' size=6 name='play' maxlength=5 value='$play'>
> <input type='text' size=6 name='big' maxlength=4 value='$big'>
> <input type='text' size=6 name='reg' maxlength=4 value='$reg'>
> この部分で $play $big $reg に値が入ります。
>
> 配列宣言している名前と同じですが別のデータです。
> 普通違う名前にするもんですが、
>
> 仕方が無いので [/url] が付くか付かないかで判別します。
> 配列は $i=0; $big[$i]; の場合
> $big[0] で、$big[0]の値は 327 となります。
> $big[1] で、$big[1]の値は 318
> $big[2] で、$big[2]の値は 309
> 以下を見れば数値がどのように対応しているかわかりますね?
> @big = ('327', '318', '309', '300', '292', '284'); # 1/x
>
> 後の #計算開始 以降は四則計算を行っているだけですので。
> += や / * の意味を学んでください。
> どんな計算を行っているかが分かれば、
> なぜ欲しい結果が得られないか導き出せると思います。
仰る通りパチスロ台の各設定確率を出すプログラムになります。
'327', '318', '309', '300', '292', '284'の数値はメーカーが発表している設定別のBIGボーナス当選確率になります。
この場合は分母の数値が大きいので現在のプログラムで問題なく計算してくれます。
BIGボーナスの数値の部分を通常時の小役確率(例えばベルやスイカ)等に置き換えようとすると分母が小さくなります(1/7とか1/8.5等)
分母が小さくなった際に下記の部分が表示されなくなります。
設 1 -> %
設 2 -> %
設 3 -> %
設 4 -> %
設 5 -> %
設 6 -> %
Re:お尋ね致します。
Perlは詳しくないのですが、ぱっと見たところ
$p1 = (1/$big[$i])**$big * (1-1/$big[$i])**($play-$big);
$p2 = (1/$reg[$i])**$reg * (1-1/$reg[$i])**($play-$reg);
$p3 = $p1 * $p2;
のあたりで値が小さくなりすぎているのかなと思います。
($playの値が多すぎることによるオーバーフロー?)
Math::BigFloatを使うとどうなるでしょうか?
見当違いでしたらすみません。
print文などを入れてどこで値が消えているのか調べてはどうでしょうか。
$p1 = (1/$big[$i])**$big * (1-1/$big[$i])**($play-$big);
$p2 = (1/$reg[$i])**$reg * (1-1/$reg[$i])**($play-$reg);
$p3 = $p1 * $p2;
のあたりで値が小さくなりすぎているのかなと思います。
($playの値が多すぎることによるオーバーフロー?)
Math::BigFloatを使うとどうなるでしょうか?
見当違いでしたらすみません。
print文などを入れてどこで値が消えているのか調べてはどうでしょうか。
Re:お尋ね致します。
> Perlは詳しくないのですが、ぱっと見たところ
>
> $p1 = (1/$big[$i])**$big * (1-1/$big[$i])**($play-$big);
> $p2 = (1/$reg[$i])**$reg * (1-1/$reg[$i])**($play-$reg);
> $p3 = $p1 * $p2;
>
> のあたりで値が小さくなりすぎているのかなと思います。
> ($playの値が多すぎることによるオーバーフロー?)
> Math::BigFloatを使うとどうなるでしょうか?
> 見当違いでしたらすみません。
> print文などを入れてどこで値が消えているのか調べてはどうでしょうか。
>
ご返答頂きまして有難う御座います。
CGIの製作者の方も比較する数値の分母が小さくなるとオーバーフローを起こして計算しなくなると仰っておりました。
試行回数=play数が増えると動作しなくなる様です。
>
> $p1 = (1/$big[$i])**$big * (1-1/$big[$i])**($play-$big);
> $p2 = (1/$reg[$i])**$reg * (1-1/$reg[$i])**($play-$reg);
> $p3 = $p1 * $p2;
>
> のあたりで値が小さくなりすぎているのかなと思います。
> ($playの値が多すぎることによるオーバーフロー?)
> Math::BigFloatを使うとどうなるでしょうか?
> 見当違いでしたらすみません。
> print文などを入れてどこで値が消えているのか調べてはどうでしょうか。
>
ご返答頂きまして有難う御座います。
CGIの製作者の方も比較する数値の分母が小さくなるとオーバーフローを起こして計算しなくなると仰っておりました。
試行回数=play数が増えると動作しなくなる様です。
Re:お尋ね致します。
取りあえず、貼ってあるCGIは動かなかったので
他から引っ張ってきてデータを置き換えて試してみました。
計算部分は特に変更は加えてませんが、
小さい値でも正常に計算できてますよ?
他から引っ張ってきてデータを置き換えて試してみました。
計算部分は特に変更は加えてませんが、
小さい値でも正常に計算できてますよ?
Re:追記
まず結論から言うと、大きい数字を入れると
結果がとんでもなく 0 に 近い数値しか
出さないために表示されていません。
当方の貼ったCGIで10回中3回スイカを引いた場合だと正常に表示されますよね?
つまり考え方としては入力した数値が小さければ問題ないということです。
という事は先に書きましたが入力された数値は $play $big $reg でしたね?
これをどうすれば良いのでしょうか?
大きいから問題が出るのだから?
$big = $big/10;
予め小さくしてやればいいんです。
#------------
# 計算開始
#------------
$big = 0 if !$big;
$reg = 0 if !$reg;
$play2 = $play/10;
$big2 = $big/10;
$reg2 = $reg/10;
$bp = &point(($play2/$big), 2) if $big;
$rp = &point(($play2/$reg), 2) if $reg;
$br = $big + $reg;
$brp = &point(($play2/$br), 2) if $br;
for ($x=0; $x<=5; $x++) {
$a0 = 1/$big[$x];
$a1 = 1/$reg[$x];
$p1 = $a0**$big2 * (1-$a0)**($play2-$big2);
$p2 = $a1**$reg2 * (1-$a1)**($play2-$reg2);
$p3 = $p1 * $p2;
$t_bigp += $p1; push(@bigp,$p1);
$t_regp += $p2; push(@regp,$p2);
$t_brp += $p3; push(@brp, $p3);
}
結果がとんでもなく 0 に 近い数値しか
出さないために表示されていません。
当方の貼ったCGIで10回中3回スイカを引いた場合だと正常に表示されますよね?
つまり考え方としては入力した数値が小さければ問題ないということです。
という事は先に書きましたが入力された数値は $play $big $reg でしたね?
これをどうすれば良いのでしょうか?
大きいから問題が出るのだから?
$big = $big/10;
予め小さくしてやればいいんです。
#------------
# 計算開始
#------------
$big = 0 if !$big;
$reg = 0 if !$reg;
$play2 = $play/10;
$big2 = $big/10;
$reg2 = $reg/10;
$bp = &point(($play2/$big), 2) if $big;
$rp = &point(($play2/$reg), 2) if $reg;
$br = $big + $reg;
$brp = &point(($play2/$br), 2) if $br;
for ($x=0; $x<=5; $x++) {
$a0 = 1/$big[$x];
$a1 = 1/$reg[$x];
$p1 = $a0**$big2 * (1-$a0)**($play2-$big2);
$p2 = $a1**$reg2 * (1-$a1)**($play2-$reg2);
$p3 = $p1 * $p2;
$t_bigp += $p1; push(@bigp,$p1);
$t_regp += $p2; push(@regp,$p2);
$t_brp += $p3; push(@brp, $p3);
}
Re:追記
まぁ、とりあえず実際にやってみましょうか.
↓
http://www33.tok2.com/home/tuk/cgi/goldshio.cgi
ここで計算した後、
上で私が書いた文章を読み直してください。
↓
http://www33.tok2.com/home/tuk/cgi/goldshio.cgi
ここで計算した後、
上で私が書いた文章を読み直してください。
Re:追記
いや…すいません。
理解していなかった様ですorz
みて驚いたのと同時に自分にがっかりしました。
#------------
# 計算開始
#------------
$big = 0 if !$big;
$reg = 0 if !$reg;
$play2 = $play/10;
$big2 = $big/10;
$reg2 = $reg/10;
$bp = &point(($play2/$big), 2) if $big;
$rp = &point(($play2/$reg), 2) if $reg;
$br = $big + $reg;
$brp = &point(($play2/$br), 2) if $br;
for ($x=0; $x<=5; $x++) {
$a0 = 1/$big[$x];
$a1 = 1/$reg[$x];
上記の部分の記述をこの様に書き換えれば良いのですね。
理解していなかった様ですorz
みて驚いたのと同時に自分にがっかりしました。
#------------
# 計算開始
#------------
$big = 0 if !$big;
$reg = 0 if !$reg;
$play2 = $play/10;
$big2 = $big/10;
$reg2 = $reg/10;
$bp = &point(($play2/$big), 2) if $big;
$rp = &point(($play2/$reg), 2) if $reg;
$br = $big + $reg;
$brp = &point(($play2/$br), 2) if $br;
for ($x=0; $x<=5; $x++) {
$a0 = 1/$big[$x];
$a1 = 1/$reg[$x];
上記の部分の記述をこの様に書き換えれば良いのですね。
Re:追記
$play2 というのは実際に $play を表示に使う場合に
影響しないように、計算で使うためだけに用意した変数です。
ですので計算記述中の $play は $play2 に置き換わっています。
$big は $big2
$reg は $reg2
後、念のため言っておきますが、
書いている文章も、載せてあるプログラムも
900/9000 も 9/90 も確率は同じという
あくまで『考え方の例』として書いたものですので、
単に値を小さくしただけだと
おそらく問題が発生すると思います。
この辺りは参考書を読んで自分なりに
勉強してみてください。
1000以上の値が入力されたら値を加工するなどの
分岐処理を覚えれば大丈夫です。
影響しないように、計算で使うためだけに用意した変数です。
ですので計算記述中の $play は $play2 に置き換わっています。
$big は $big2
$reg は $reg2
後、念のため言っておきますが、
書いている文章も、載せてあるプログラムも
900/9000 も 9/90 も確率は同じという
あくまで『考え方の例』として書いたものですので、
単に値を小さくしただけだと
おそらく問題が発生すると思います。
この辺りは参考書を読んで自分なりに
勉強してみてください。
1000以上の値が入力されたら値を加工するなどの
分岐処理を覚えれば大丈夫です。