发红包程序的设计

  • 代码
 红包发放到每个人的原始总值' . $result_sum;
    if ($result_sum !== $sum) {
        $diff = $sum- $result_sum; // 如果是正数,表述有多余的,负数,表示值多算了
        // 获取最后一个值,并更改
        end($arr); // 注意 end key 函数必须单独写,而不能放在一块
        $last_key = key($arr);
        $last_value = $arr[$last_key];
        $arr[$last_key] = $last_value + $diff;
    }
    echo '
更新最后一个人的红包金额后的总值' . array_sum($arr); return $arr; } $res = devide_money(); echo '
';
print_r($res);
image.png
  • 设计思路
  • 保证每个红包都是公平的随机值,rand(10, 100);
  • 红包生成后会有一个总金额 sum_money,这个金额肯定和我们输入的金额 sum 不对等
  • 解决每个红包金额比例对等问题 sum/sum_money*$item
  • 这时候的总金额与输入的红包金额值是接近的,要解决差额的问题,处理到最后一个红包

领取红包

领取红包可以直接 array_pop($arr) 这种方式领取,不过如果你想重新打乱红包的顺序,建议有两种方式

  • 1.将生成的红包 shuffle ( array &$array ) : bool
    1. array_rand ( array $array [, int $num = 1 ] ) : [mixed] array_rand — 从数组中随机取出一个或多个单元
注意 array_rand 取出来的是键

你可能感兴趣的:(发红包程序的设计)