> 백엔드 개발 > PHP 튜토리얼 > 추첨기능(맞춤번호 및 당첨확률)

추첨기능(맞춤번호 및 당첨확률)

WBOY
풀어 주다: 2016-07-25 08:50:29
원래의
1591명이 탐색했습니다.
복권 시스템에 적합
  1. /*
  2. * 1만분의 1까지 정확한 복권 카테고리
  3. * 3단계: 1. 당첨 확률 배열을 수락합니다. 로또 시드 수락; 3. 당첨 레벨 반환
  4. */
  5. class Lottery {
  6. /*
  7. * 당첨 확률 배열, 자동으로 상품 수 결정
  8. * 배열 키 value 합은 100이며, 당첨되지 않을 확률은 자동으로 계산됩니다. 초기 값이 100을 초과하면 오류가 발생합니다.
  9. */
  10. protected $_rate = array();
  11. /*
  12. * 당첨 확률 설정
  13. * @param Array, 당첨 확률을 배열로 전달
  14. */
  15. 공개 함수 setRate($rate = array(12.1, 34)) {
  16. $this->_rate = $rate;
  17. if (array_sum($this->_rate) > 100)//확률에 문제가 있는지 확인 설정
  18. throw new Exception('승률 최대 100%');
  19. if (array_sum($this->_rate) < 100)
  20. //승하지 못할 확률을 정의합니다. 사용자가 제공한 값의 합은 100, 0 무시
  21. $ this->_rate[] = 100 - array_sum($this->_rate);
  22. }
  23. /*
  24. * 1부터 10000까지의 정수 시드를 무작위로 생성하여 승리 판정 함수에 제출
  25. * @return int, 전달된 확률로 정렬, 당첨 항목 수 반환
  26. */
  27. public function runOnce() {
  28. return $this->judge(mt_rand (0, 10000));
  29. }
  30. /*
  31. * 설정된 확률에 따라 수신 여부를 결정합니다. 임의의 값이 승자입니다
  32. * @param int,$seed 10000 이내 난수
  33. * @return int,$i는 전달된 확률로 정렬하여 당첨된 항목의 개수를 반환합니다
  34. */
  35. 보호 함수 Judge($seed) {
  36. foreach ($ this->_rate as $key => $value) {
  37. $tmpArr[$key 1] = $value * 100;
  38. }
  39. // 확률에 10을 곱하고 무작위 선택을 위해 누적하여
  40. $tmpArr[0] = 0;
  41. foreach ($tmpArr as $key => $value) {
  42. if ($key > 0) {
  43. $tmpArr[$ key] = $tmpArr[$key - 1];
  44. }
  45. }
  46. for ($i = 1; $i < count($tmpArr); $i ) {
  47. if ($ tmpArr[$i - 1] < $seed && $seed <= $tmpArr[$i]) {
  48. return $i; //당첨 아이템 개수 반환(확률 설정한 순서대로)
  49. }
  50. }
  51. }
  52. }
  53. $rate = array(33, 20, 2 , 0.95, 12, 4.55);
  54. $a = 새로운 복권 ;
  55. $a->setRate($rate);
  56. for ($i = 0; $i <= 10000 ; $i ) {
  57. $b = $a->runOnce() ;
  58. @$rewards[$b] ;
  59. }
  60. unset($rewards['']);
  61. echo array_sum($rewards);
  62. ?>
  63. < html>
  64. < ;body>
  65. 10,000회 실행하여 설정된 확률과 당첨 횟수를 비교합니다< /thead>
  66. 당첨 횟수
  67. %
  68. < ;td>
  69. 확률 설정
    %
    %
    %
    %
코드 복사
추첨기능(맞춤번호 및 당첨확률)


원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿