1

私はラッフルのようなプログラムを持っています: ユーザーは x 個のトークンをアイテムに置きます。これは、user_id、item_id、number_of_tokens としてデータベースに記録されます。

絵を描くときは、次のことを行います。

$ballots = array();
$users = all users that placed at least one token on Item A.

foreach( $users as $user )
{
  $number_of_ballots = Get number of ballots this User placed on Item A
  for($i = 1; $i leq $number_of_ballots; $i++)
  {
    $ballots[] = $user->id;
  }
}
shuffle( $ballots );
$winner_user_id = mt_rand(0, count($ballots) -1 );

今私の質問は次のとおりです。

  • これはランダムな選択を保証しますか?
  • アイテム A に 10 個のトークンを置いた人は、アイテム A に 1 個のトークンを置いた人よりも勝つ確率が 10 倍高いでしょうか?

ご協力いただきありがとうございます。

4

2 に答える 2

1

はい、疑似乱数ジェネレーターの制限内で。mt_randよりも優れていますがrand、それでも真にランダムではありません。答えは本当に「十分に近い」です。セットから勝者をランダムに選択しているため、実際には必要ないことに注意してくださいshuffle

はい、10 個のトークンを持っている人は、1 個のトークンを持っている人よりも 10 倍高いチャンスがあります。

于 2012-09-24T23:23:09.023 に答える
1

私には良さそうに見えますがmt_rand、 は rand より優れていますが、完全ではありません。http://www.random.org/などの真の乱数ジェネレーターを使用する方がよいでしょう。それらを少し比較してみましょう。

さらに、実際のお金を扱っている場合は、random.org が信頼性の証明書を提供して、選択のランダム性を検証します。

于 2012-09-24T23:25:00.057 に答える