> 백엔드 개발 > PHP 문제 > PHP 코드에서 빨간 봉투 기능을 구현하는 방법

PHP 코드에서 빨간 봉투 기능을 구현하는 방법

藏色散人
풀어 주다: 2023-03-13 16:24:02
원래의
2667명이 탐색했습니다.

PHP 코드에서 빨간 봉투 기능을 구현하는 방법: 1. 행운의 빨간 봉투를 얻으려면 distribution_red_bages 메소드를 사용하십시오. 2. 빨간 봉투를 균등하게 분배하려면 rob_red_bages 메소드를 사용하십시오. 봉투의 집합입니다.

PHP 코드에서 빨간 봉투 기능을 구현하는 방법

이 문서의 운영 환경: Windows 7 시스템, PHP 버전 7.1, DELL G3 컴퓨터

PHP 코드에서 빨간 봉투 기능을 구현하는 방법은 무엇입니까?

PHP 빨간 봉투 기능 코드

얼마 전에 이런 질문을 받았는데 최근에 시간이 나면 글을 쓰겠습니다. 꽤 흥미롭네요

우선 빨간 봉투를 잡는 방법을 분류해 보겠습니다.

빨간 봉투를 보내는 사람들에게는 다음이 있습니다. 카테고리는 대략 3가지 정도 (다른건 아직 생각해보지 못했는데 생각나시면 연락주세요~)

1. 행운의 빨간봉투 갯수는 유동적입니다. (모두 운에 달려있습니다.)

2. The 지정된 개수의 행운의 빨간 봉투 (숫자는 확실함, 1점 이상)

3. 빨간 봉투는 균등하게 나누어집니다 (숫자는 확실합니다. 모두가 똑같이 공유합니다) 이게 쓰기 더 쉽죠? 안녕하세요

코드:

<?php
var_dump(rob_red_bages(5 , 10));
var_dump(distribute_red_bages(5));
/*
方法主要功能:拼手气红包(个数不定)
一个参数
    参数一: 红包总金额(按分计算)
*/
function distribute_red_bages($sum){
    $sum = $sum*100;
    $i=0;
    while($sum>0){
        $temp = rand(1 , $sum);//红包值
        $sum -= $temp;
        $arr[$i++] = $temp/100;
    }
    //check($arr);
    return $arr;
}
/*
方法主要功能:均分红包
两个参数:
    参数一: 红包总金额
    参数二: 均分个数
*/
function average_red_bages($sum , $num){
    $res = $sum/$num;
    for($i=0 ; $i<$num ; $i++){
        $arr[$i] = $res;
    }
    //check($arr);
    return $arr;
}
/*
方法主要功能:规定个数的手气红包
两个参数: 
    参数一:红包总金额
    参数二:红包个数
    
    计算流程,随机生成num个数
    求和得到m
    用sum/m 得到每个数需要k
    用随机数*k
*/
function rob_red_bages($sum , $num){
    $sum = $sum*100;
    for($i=0 ; $i<$num ; $i++){
        $temp = rand(1 , $sum);
        $arr[$i] = $temp;
        $sumall += $temp;
    }
    $k = $sum/$sumall;
    for($i=0 ; $i<sizeof($arr); $i++){
        $arr2[$i] = $arr[$i]*$k/100;        
    }
    return $arr2;
}
/*红包总额检测*/
function check($arr){
    foreach($arr as $a){
        $sum += $a;
        echo $a."+";
    }
    
    echo " 0 =".$sum."\n";
}
?>
로그인 후 복사

행운의 빨간 봉투를 분석해 보겠습니다. (등분에 대해서는 이야기하지 않겠습니다. 모두가 알고 있습니다.):

행운의 빨간 봉투의 개수는 가변적입니다: (총액: 합계)

- --- >합계보다 무작위로 작은 첫 번째 숫자: n

---->총량에서 이 숫자를 뺍니다: temp = sum-n

---->임의로 temp보다 작은 숫자

-- -->총액이 0이 될 때까지 위의 방법을 반복합니다

---->임의의 결과를 저장하는 배열을 반환합니다.

이 방법은 더 일반적이며 지정된 숫자를 달성하는 데에도 사용할 수 있습니다. 빨간 봉투! 그런데~

행운의 빨간 봉투 개수를 규정하는 아이디어(총액 합계, 빨간 봉투 개수 num)

----> 합계보다 작은 숫자를 무작위로 배열 생성

- ---> 이 숫자의 합을 계산하여 allsum을 얻습니다

----> 생성된 모든 숫자의 공배수를 얻기 위해 합계를 나눕니다.

----> 공배수를 사용하여 각 빨간 봉투의 값을 구합니다

이 방법에는 단점이 있습니다(나눗셈으로 인해 무리수가 나올 수 있으므로 최종 결과가 합보다 약간 크거나 합보다 약간 작을 수 있습니다)

아마도 그럴 것입니다! 소통하고 수정하는 것을 환영합니다! ~~

추천 학습: "PHP 비디오 튜토리얼"

위 내용은 PHP 코드에서 빨간 봉투 기능을 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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