1

編集:問題は解決しました

Counter-Strikeの一致からのいくつかの統計をPHPスクリプトに分析する一般的な評価アルゴリズムを移植しようとしています。システムの概要は、以下のリンク(ニュース投稿の下部)にあります: http ://www.hltv.org/?pageid = 242&eventid = 0

とにかく、私はすべてをPHPでセットアップしました、そして私はすべてが正しいと合理的に確信しています。計算の目的で、次のことを想定します。

$rating1K = 5;
$rating2K = 8;
$rating3K = 3;
$rating4K = 0;
$rating5K = 0;
$kills = 30
$deaths = 19
$round = 30

これは私のコードです:

$kpr = $kills / $round; // kills per round
$killRating = ($kills / $round / $kpr); 

$spr = ($round - $deaths) / $round; // survivals per round
$survivalRating = ($round - $deaths) / $round / $spr;    

$averageRMK = ((1*$rating1K + 4*$rating2K + 9*$rating3K + 16*$rating4K + 25*$rating5K)/$round);
$roundsWithMultipleKillsRating = ((1*$rating1K + 4*$rating2K + 9*$rating3K + 16*$rating4K + 25*$rating5K)/$round/$averageRMK);

$rating = ($killRating + 0.7 * $survivalRating + $roundsWithMultipleKillsRating) / 2.7;
echo $rating; 

問題は、$ killRating、$ SurvivalRating、および$ roundsWithMultipleKillsRatingがPHPスクリプトで常に1を返すように見えるのに対し、自分で手動で計算した場合は異なることです。たとえば、自分で$ killRatingを計算すると、1.5789などが得られますが、PHPは「1」を返します。

この問題を解決するにはどうすればよいですか?

どうもありがとう。

4

3 に答える 3

2

あなたは間違った計算をしています...

$kpr = $kills / $round; // kills per round
$killRating = ($kills / $round / $kpr); 

等しい

$kpr = 30 / 30; // 1
$killRating = (30 / 30 / 1); //1

$spr = ($round - $deaths) / $round; // survivals per round
$survivalRating = ($round - $deaths) / $round / $spr;

等しい

$spr = (30 - 19) / 30; // 0.36666
$survivalRating = (30 - 19) / 30 / 0.3666; // 1

あなた自身の計算は間違っています。PHPはここですべてうまくいきます。

kprは$kill/ $roundであることに注意してください。$kill/ $ round / $ kprを除算すると、常に1になります。それ自体で割った数値は1になります。誰もが浮動小数点数と整数について話しているとは信じられません。数学を理解する...

于 2012-10-05T11:40:07.853 に答える
1
$kills = 30;
$deaths = 19;
$round = 30;

$kpr = $kills / $round; // kills per round
$killRating = ($kills / $round / $kpr);

KPRの場合:キル/ラウンド= 30/30 = 1

KillRatingの場合:kills / round / kpr = 30/30/1 = 1(これはkpr / kprです、なぜですか?)

答えが1であるため、PHPはその部分の答えとして1を与えています。

于 2012-10-05T11:40:51.873 に答える
0

floatsの代わりに処理していることを確認してくださいintegers。それらをキャストしてみてください。

于 2012-10-05T11:33:50.083 に答える