2012-09-24 2 views
1

나는 추첨과 같은 프로그램을 가지고있다 : 사용자는 아이템에 x 개의 토큰을 배치한다. 시간, 나는 다음을 수행 끌어 올 때 이것은 USER_ID로 데이터베이스에 기록됩니다, ITEM_ID은추첨 코드로 PHP를 사용한 실제 난수 생성

을 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 배 높은 우승 기회가 있습니까?

도움 주셔서 감사합니다.

답변

1

나에게 잘 보이지만, mt_rand은 랜드보다 좋지만 완벽하지는 않습니다. http://www.random.org/과 같은 실제 난수 생성기를 사용하는 것이 좋습니다. 그 중 Here's a little comparison

또한 실제 돈을 다루는 경우 random.org는 선택 항목의 임의성을 확인하기 위해 정품 인증서를 제공합니다.

+0

을 살펴 보겠습니다. 고맙습니다. – luv2Code

+0

Random.org 그것이 그렇습니다. 매우 "진실"하고 신뢰할 수있는 것 같습니다. – luv2Code

1

예, 의사 난수 생성기의 제한 범위 내입니다. mt_randrand보다 우수하지만 여전히 임의의 값은 아닙니다. 대답은 정말로 "충분히 가깝습니다". 세트에서 우승자를 임의로 선택하기 때문에 실제로는 shuffle이 필요하지 않습니다.

예, 10 개의 토큰을 가진 사람은 1 개의 토큰을 가진 사람보다 10 배의 가능성이 있습니다.

+0

감사. random.org 및 http://boallen.com/random-numbers.html – luv2Code