복권 프로그램 당첨 확률 알고리즘을 구현한 PHP의 예
우리는 일상 업무에서 복권 활동에 자주 참여하므로 오늘은 스크래치 카드, 큰 바퀴 및 기타 복권 알고리즘에 사용할 수 있는 PHP 당첨 확률 알고리즘을 공유하겠습니다. 사용법은 매우 간단합니다. 코드에 자세한 설명 지침이 있으므로 필요한 친구는 참고할 수 있습니다.
먼저 백엔드 PHP 프로세스를 완료합니다. PHP의 주요 작업은 보상과 해당 당첨 확률을 구성하는 것입니다. 프런트 엔드 페이지에서 특정 상자를 클릭하면 백엔드 PHP에 Ajax 요청이 전송됩니다. 그러면 백엔드 PHP는 확률 알고리즘을 통과하여 당첨 결과를 제공하고 동시에 당첨되지 않은 상금 정보는 JSON 데이터 형식으로 프런트 엔드 페이지로 전송됩니다.
먼저 확률 계산 함수를 살펴보겠습니다
function get_rand($proArr) { $result = ''; //概率数组的总概率精度 $proSum = array_sum($proArr); //概率数组循环 foreach ($proArr as $key => $proCur) { $randNum = mt_rand(1, $proSum); if ($randNum <= $proCur) { $result = $key; break; } else { $proSum -= $proCur; } } unset ($proArr); return $result; }
위 코드는 고전적인 확률 알고리즘입니다. $proArr은 미리 설정된 배열입니다. 배열은 1,1000 화면의 확률 범위에서 시작합니다. 첫 번째 숫자가 발생 확률 범위 내에 있는지 여부. 그렇지 않은 경우 k 값에서 방금 숫자의 확률 공간을 뺍니다. 즉, 두 번째 숫자는 범위 내에서 필터링됩니다. 범위는 1,900입니다. 이런 식으로 끝까지 요구 사항을 충족하는 숫자는 항상 존재합니다. 이는 상자 안의 무언가를 만지는 것과 같습니다. 첫 번째 것도 없고, 두 번째도 없고, 세 번째도 없으면 마지막 것도 있어야 합니다. 이 알고리즘은 간단하고 매우 효율적입니다. 중요한 점은 이 알고리즘이 이전 프로젝트, 특히 대용량 데이터가 있는 프로젝트에 적용되었다는 것입니다.
다음으로 PHP를 통해 상을 구성합니다.
$prize_arr = array( '0' => array('id'=>1,'prize'=>'平板电脑','v'=>1), '1' => array('id'=>2,'prize'=>'数码相机','v'=>5), '2' => array('id'=>3,'prize'=>'音箱设备','v'=>10), '3' => array('id'=>4,'prize'=>'4G优盘','v'=>12), '4' => array('id'=>5,'prize'=>'10Q币','v'=>22), '5' => array('id'=>6,'prize'=>'下次没准就能中哦','v'=>50), );
이 2차원 배열은 이 복권의 모든 경품 정보를 기록합니다. 여기서 id는 당첨 수준을 나타내고, Prize는 경품을 나타내며, v는 당첨 확률을 나타냅니다. v는 정수여야 합니다. 해당 상금의 v를 0으로 설정할 수 있습니다. 이는 상을 받을 확률이 0이라는 것을 의미합니다. 배열(기본)에 있는 v의 합은 더 커집니다. 확률이 반영될 수 있습니다. 이 예에서 v의 합이 100이면 태블릿의 당첨 확률은 1%입니다. v의 합이 10,000이면 당첨 확률은 1/10000입니다.
프런트 엔드 페이지가 요청될 때마다 PHP는 상 설정 배열을 반복하고 확률 계산 함수 get_rand를 통해 추첨된 상 ID를 얻습니다. 당첨된 상품은 $res['yes'] 배열에 저장하고, 나머지 당첨되지 않은 정보는 $res['no']에 저장한 후 마지막으로 json 번호 데이터를 프런트엔드 페이지에 출력합니다.
foreach ($prize_arr as $key => $val) { $arr[$val['id']] = $val['v']; } $rid = get_rand($arr); //根据概率获取奖项id $res['yes'] = $prize_arr[$rid-1]['prize']; //中奖项 unset($prize_arr[$rid-1]); //将中奖项从数组中剔除,剩下未中奖项 shuffle($prize_arr); //打乱数组顺序 for($i=0;$i<count($prize_arr);$i++){ $pr[] = $prize_arr[$i]['prize']; } $res['no'] = $pr; echo json_encode($res);
첨부된 내용은 네티즌의 구현 방법이기도 합니다
/** * 抽奖 * @param int $total */ function getReward($total=1000) { $win1 = floor((0.12*$total)/100); $win2 = floor((3*$total)/100); $win3 = floor((12*$total)/100); $other = $total-$win1-$win2-$win3; $return = array(); for ($i=0;$i<$win1;$i++) { $return[] = 1; } for ($j=0;$j<$win2;$j++) { $return[] = 2; } for ($m=0;$m<$win3;$m++) { $return[] = 3; } for ($n=0;$n<$other;$n++) { $return[] = '谢谢惠顾'; } shuffle($return); return $return[array_rand($return)]; } $data = getReward(); echo $data; ?>
요약:
이 글을 공부하는 과정을 통해 여러분은 PHP의 복권 프로그램 당첨 확률 알고리즘에 대해 어느 정도 이해하게 되리라 믿습니다. 도움이 되길 바랍니다. 작업에 도움이 됩니다!
관련 추천:
PHP 복권 프로그램 핵심 코드(행운의 시청자 3명 추첨)
위 내용은 복권 프로그램 당첨 확률 알고리즘을 구현한 PHP의 예의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











PHP 8.4는 상당한 양의 기능 중단 및 제거를 통해 몇 가지 새로운 기능, 보안 개선 및 성능 개선을 제공합니다. 이 가이드에서는 Ubuntu, Debian 또는 해당 파생 제품에서 PHP 8.4를 설치하거나 PHP 8.4로 업그레이드하는 방법을 설명합니다.

CakePHP는 PHP용 오픈 소스 프레임워크입니다. 이는 애플리케이션을 훨씬 쉽게 개발, 배포 및 유지 관리할 수 있도록 하기 위한 것입니다. CakePHP는 강력하고 이해하기 쉬운 MVC와 유사한 아키텍처를 기반으로 합니다. 모델, 뷰 및 컨트롤러 gu

VS Code라고도 알려진 Visual Studio Code는 모든 주요 운영 체제에서 사용할 수 있는 무료 소스 코드 편집기 또는 통합 개발 환경(IDE)입니다. 다양한 프로그래밍 언어에 대한 대규모 확장 모음을 통해 VS Code는

CakePHP는 오픈 소스 MVC 프레임워크입니다. 이를 통해 애플리케이션 개발, 배포 및 유지 관리가 훨씬 쉬워집니다. CakePHP에는 가장 일반적인 작업의 과부하를 줄이기 위한 여러 라이브러리가 있습니다.

이 튜토리얼은 PHP를 사용하여 XML 문서를 효율적으로 처리하는 방법을 보여줍니다. XML (Extensible Markup Language)은 인간의 가독성과 기계 구문 분석을 위해 설계된 다목적 텍스트 기반 마크 업 언어입니다. 일반적으로 데이터 저장 AN에 사용됩니다
