+
80
-

请问php中如何实现微信红包随机分配与平均分配算法?

php

请问php中如何实现微信红包随机分配与平均分配算法?

有没有类似的代码

网友回复

+
0
-

很简单,随机红包php算法代码

<?php
function rand_money($total_bean, $total_packet)
{
  $min_bean = 1;
  $max_bean = 5000;
  $range = 2;
  $total_bean = $total_bean - $total_packet * $min_bean; //每个人预留一个最小值
  $list = [];
  $min = 1;
  while(count($list) < $total_packet-1){
    $max = floor($total_bean / $total_packet) * $range;
    $bean = rand($min, $max);
    if ($bean <= $max_bean - 1) {
      $list[] = $bean;
      $total_bean -= $bean;
    }
  }
  $list[] = $total_bean;//剩余的金豆作为最后一个红包
  //合并
  foreach ($list as $k => $v) {
    $list[$k] += $min_bean;
  }
  return $list;
}
$ret=rand_money(100,10);//100分,我们分给10个人
var_dump($ret);//每个人的分钱数
echo array_sum($ret);//分钱后的钱总和



平均算法就直接用除以,这里要有判断,是否可以整除

<?php
function aver_money($total, $nums) {
    $ret = $total / $nums;
    if (is_int($ret)) {
        return $ret;
    } else {
        throw new Exception("抛出异常");
    }
}
echo aver_money(100,4);

我知道答案,我要回答