>  기사  >  백엔드 개발  >  PHP 빨간 봉투 열기 알고리즘에 대한 간략한 분석

PHP 빨간 봉투 열기 알고리즘에 대한 간략한 분석

藏色散人
藏色散人앞으로
2021-06-09 15:02:024594검색

이 기사는 PHP의 빨간 봉투 열기 알고리즘에 대한 간략한 분석을 제공합니다. 이는 특정 참조 가치가 있으므로 도움이 필요한 모든 사람에게 도움이 되기를 바랍니다.

PHP 빨간색 봉투 분할 알고리즘

코드는 다음과 같습니다.

/**
     * 拆分红包
     * @param SendRedPackageRequest $request
     * @return array
     */
    protected function spitMoney(SendRedPackageRequest $request)
    {
        $result = [];
        $reamingMoney = $request->money;
        for ($i = $request->count; $i >= 1; $i--) {
            if ($i === 1) {
                $result[] = round($reamingMoney, 2);
                $reamingMoney = 0;
            } else {
                $average = round(bcdiv($reamingMoney, $i), 2);    //平均值
                $amount = round(mt_rand(1, $average * 199) / 100, 2);
                $reamingMoney = doubleval(bcsub($reamingMoney, $amount));
                $result[] = round($amount, 2);
            }
        }
        return $result;
    }

논리는 비교적 간단합니다. 분할할 금액과 분할 횟수를 전달합니다.

먼저 분할할 숫자를 반복하고 다음인지 확인합니다. 마지막이라면 남은 돈을 모두 넣어주세요

그렇지 않다면 남은 금액(첫 번째 주기의 남은 금액 = 총 금액)을 남은 횟수로 나누어 평균을 구하세요. 무작위로 가장 작은 0.01과 평균 * 2를 취하고 남은 금액을 업데이트하면 됩니다.

알고리즘은 WeChat 빨간 봉투 분할 알고리즘을 시뮬레이션하지만 이는 미리 계산되어 저장되며 WeChat은 매번 동적으로 계산합니다.

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

위 내용은 PHP 빨간 봉투 열기 알고리즘에 대한 간략한 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 learnku.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제