>  기사  >  백엔드 개발  >  PHP 무작위 복권 예제 분석_php 기술

PHP 무작위 복권 예제 분석_php 기술

WBOY
WBOY원래의
2016-05-16 20:22:181082검색

이 기사의 예에서는 PHP 무작위 복권의 사용을 설명합니다. 참고할 수 있도록 모든 사람과 공유하세요. 구체적인 분석은 다음과 같습니다.

1. 설정된 확률에 따라 무작위 추첨 결과를 얻습니다.​  

코드 복사 코드는 다음과 같습니다.
/**
* 복권 도구
​*/
클래스 lottery_tool {
보호된 정적 $awardsArr;
보호된 정적 $proField = '확률';
보호된 정적 $proSum = 0;
보호된 정적 $checkAward = false;
const SUCCESS_CODE = 0;
const FAIL_CODE = -1;
//복권 데이터 확인
보호된 정적 함수 checkAwards(){
If (!is_array(self::$awardsArr) || 비어 있음(self::$awardsArr)) {
                return self::$checkAward = false;
}
           self::$proSum = 0;
foreach (self::$awardsArr as $_key => $award) {
                  self::$proSum = $award[self::$proField];
}
If (empty(self::$proSum)) {
                return self::$checkAward = false;
}
          return self::$checkAward = true;
}
보호된 정적 함수 SuccessRoll($rollKey){
           return array('code' => self::SUCCESS_CODE, 'roll_key' => $rollKey, 'msg' => '롤 성공');
}
보호된 정적 함수failRoll($msg = 'rollfail'){
           return array('code' => self::FAIL_CODE, 'msg' => $msg );
}
//복권
공개 정적 함수 롤() {
If (false == self::$checkAward) {
                return self::failRoll('시상 데이터 형식이 올바르지 않습니다!');
}
          $result = mt_rand(0, self::$proSum);
          $proValue = 0;
foreach (self::$awardsArr as $_key => $value) {
                 $proValue = $value[self::$proField]
                 if ($result <= $proValue) {
                    return self::successRoll($_key);
            }
}
          return self::failRoll('wrong');
}
//확률 필드 이름 변경
공용 정적 함수 setProField($field = null) {
If (!empty($field)) {
                self::$proField = $field;
}
}
//상품 설정
공개 정적 함수 setAwards($awards){
           self::$awardsArr = $awards;
          self::checkAwards();
}
}

2. 샘플 코드:
코드 복사 코드는 다음과 같습니다.
$awards = 배열(
'0' => array('pro' => 15, 'info' => '15% 가능성'),
'1' => array('pro' => 25, 'info' => '25% 확률'),
'2' => array('pro' => 40, 'info' => '40% 확률'),
'3' => array('pro' => 20, 'info' => '20% 가능성'),
);
lottery_tool::setProField('프로');
lottery_tool::setAwards($awards);
$결과 = 배열();
for ($i = 10000; $i --;) {
$result[] = lottery_tool::roll();
}
foreach($result as $key => $value) {
$awards[$value['roll_key']]['num'] ;
}
echo '
';
var_dump($awards);

실행 결과는 다음과 같습니다.

코드 복사 코드는 다음과 같습니다.
배열
0 => 배열
'프로' => 정수 15
'정보' => 문자열 '15% 가능성'(길이=15)
'숫자' => 정수 1596
1 => 배열
'프로' => 정수 25
'정보' => 문자열 '25% 가능성'(길이=15)
'숫자' => 정수 2484
2 =>
배열
'프로' => 정수 40
'정보' => 문자열 '40% 가능성'(길이=15)
'숫자' => 정수 3939
3 => 배열
'프로' => 정수 20
'정보' => 문자열 '20% 가능성'(길이=15)
'숫자' => 정수 1981


이 기사가 모든 사람의 PHP 프로그래밍 설계에 도움이 되기를 바랍니다.
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.