0

わかりました、配布したい 1000 ポイントがあるとしましょう。

ランク付けされた 200 人のプレイヤーを分配しますが、均等に分配したくありません。

代わりに、トップのプレーヤーがトップのプレーヤーよりも少なくなる傾向があるように、それを歪めたい. 事実上、正規分布の片側を刺激するある種の関数が必要です。

どうすればいいですか?

4

1 に答える 1

0
function grantPoints($totalavailpoints, $numusers, $rank){
  $pointstogrant=$totalavailpoints/$numusers;
  if($rank>$numusers/2)//he has a higher number rank, meaning he gets more points
    $pointstogrant++;
  else
    $pointstogrant--;
  return $pointstogrant;
}

これをニーズに合わせて調整する方法はたくさんあります。しかし、これはかなり基本的なことです。与える平均ポイントを計算し、下半分にいる場合は 1 を追加し、上半分にいる場合は 1 を引きます。

自問するいくつかの質問:

  • 返されるポイントは整数でなければなりませんか?
  • 全員のポイントの合計は、totalavailpoints と等しくなければなりませんか?
  • 関数で返される量にどのくらいの多様性が必要ですか?
于 2012-11-05T22:44:51.727 に答える