PHP实现简易微信红包算法

<?php

/**
 * PHP实现简易的微信红包算法
 * @version v1.0
 * @author quetiezheng
 */

 function getMoney($total, $people){
    if($people <= 0){
        return [];
    }
    $people = intval($people);
    $total = floatval($total);
    // 每个红包的最小值是0.01
    $min = 0.01;
    $aRes = [];
    for($i = 1; $i < $people; $i ++){
        // 每个红包的最大值。  剩余人最少每个0.01
        $maxtmp = ($total - ($people -1) * $min) / ($people - $i);
        $randtmp = (float)((rand($min * 100, $maxtmp *100)) / 100);
        echo '第'.$i.'个红包:'.$randtmp.PHP_EOL;
        $total = $total - $randtmp;
        $aRes[$i] = $randtmp;
    }
    // 再给最后一个人赋值
   echo '第'.$people.'个红包:'.$total.PHP_EOL;
   $aRes[$people] = $total;
   echo '红包总额:'. array_sum($aRes).PHP_EOL;
   return $aRes;
 }

 

posted @ 2020-02-26 13:24  DevelopersAndGamers  阅读(232)  评论(0编辑  收藏  举报