> 백엔드 개발 > PHP 튜토리얼 > PHP는 큰 캐러셀 복권 알고리즘을 구현합니다(코드 예)

PHP는 큰 캐러셀 복권 알고리즘을 구현합니다(코드 예)

藏色散人
풀어 주다: 2023-04-08 09:36:01
앞으로
4120명이 탐색했습니다.

PHP는 큰 캐러셀 복권 알고리즘을 구현합니다(코드 예)

이 글은 특정 예제를 통해 큰 바퀴 복권 알고리즘을 구현하는 PHP 언어를 소개합니다 . PHP 복권을 배우는 모든 사람에게 도움이 되기를 바랍니다.

프로세스:

1. 당첨 확률을 계산합니다.

3.

코드는 다음과 같습니다. 승리 확률 'v'는 백그라운드에서 설정되어 이 메소드에 전달될 수 있습니다. 정수 전달에 주의하세요

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

function get_gift(){ 

        //拼装奖项数组

        // 奖项id,奖品,概率

        $prize_arr = array(  

          '0' => array('id'=>1,'prize'=>'平板电脑','v'=>0),  

          '1' => array('id'=>2,'prize'=>'数码相机','v'=>0),  

          '2' => array('id'=>3,'prize'=>'音箱设备','v'=>0),  

          '3' => array('id'=>4,'prize'=>'4G优盘','v'=>5),  

          '4' => array('id'=>5,'prize'=>'10Q币','v'=>0),  

          '5' => array('id'=>6,'prize'=>'空奖','v'=>5),  

        );  

 

        foreach ($prize_arr as $key => $val) {  

          $arr[$val['id']] = $val['v'];//概率数组           }   

        $rid = $this->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][&#39;prize&#39;];  //未中奖项数组         }  

        $res[&#39;no&#39;] = $pr;

        // var_dump($res);

 

        if($res[&#39;yes&#39;]!=&#39;空奖&#39;){ 

            $result[&#39;status&#39;]=1; 

            $result[&#39;name&#39;]=$res[&#39;yes&#39;]; 

        }else

            $result[&#39;status&#39;]=-1; 

            $result[&#39;msg&#39;]=$res[&#39;yes&#39;]; 

        }  

        //return $result; 

        var_dump($result);

    

 

    //计算中奖概率

    function get_rand($proArr) {  

      $result = &#39;&#39;;  

 

      //概率数组的总概率精度  

      $proSum = array_sum($proArr);  

      // var_dump($proSum);

 

      //概率数组循环  

      foreach ($proArr as $key => $proCur) {  

        $randNum = mt_rand(1, $proSum);  //返回随机整数

         if ($randNum <= $proCur) {  

          $result = $key;  

          break;  

        } else {  

          $proSum -= $proCur;  

        }  

      }  

      unset ($proArr);  

      return $result;  

    }

로그인 후 복사

더 많은 관련 PHP 지식을 보려면

php 튜토리얼

을 방문하세요!

위 내용은 PHP는 큰 캐러셀 복권 알고리즘을 구현합니다(코드 예)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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