红包金额能随机到多少呢?有没有可能超过XX元?

2026-04-03 05:371阅读0评论SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计469个文字,预计阅读时间需要2分钟。

红包金额能随机到多少呢?有没有可能超过XX元?

红包装配随机金额公式:红包总金额 / 红包数量 * 随机数(0.01 - 每个红包最小金额)* 总金额 / 红包数量 * 随机数(0.01 - 每个红包最小金额)返回数组函数hongbao($total, $num, $min=0.01) { $list=array(); for ($i=1; $i <=$num; $i++) { $safe_total=( $total / $num * rand(100) / 100 + $min ) * $total / $num * rand(100) / 100 + $min ; } return $list; }

红包金额能随机到多少呢?有没有可能超过XX元?

红包随机金额

/** * @param $total 总金额 * @param $num 红包数 * @param float $min 每个红包最小金额 * @return array */ function hongbao($total, $num, $min=0.01 ){ $list = array(); for ($i=1;$i<$num;$i++) { $safe_total=($total-($num-$i)*$min)/($num-$i); //随机安全上限 $money=mt_rand($min*100,$safe_total*100)/100; $total=$total-$money; array_push( $list, $money ); } array_push( $list, round($total, 2) ); shuffle($list); return $list; } //二 最小金额随机 function hongbao($total, $num ){ $ex = $total/$num/2; $min = mt_rand(1, $ex*100) / 100; //随机最小金额 $list = array(); for ($i=1;$i<$num;$i++) { $safe_total=($total-($num-$i)*$min)/($num-$i); $money=mt_rand($min*100,$safe_total*100)/100; $total=$total-$money; array_push( $list, $money ); } array_push( $list, round($total, 2) ); shuffle($list); return $list; } /** 三: * 红包生成算法 * @param $money 总金额 * @param $number 红包数量 * @param $ratio 浮动系数 */ function hongbao2($money,$number,$ratio = 0.5){ $res = array(); //结果数组 $min = ($money / $number) * (1 - $ratio); //最小值 $max = ($money / $number) * (1 + $ratio); //最大值 /*--- 第一步:分配低保 ---*/ for($i=0;$i<$number;$i++){ $res[$i] = $min; } $money = $money - $min * $number; /*--- 第二步:随机分配 ---*/ $randRatio = 100; $randMax = ($max - $min) * $randRatio; for($i=0;$i<$number;$i++){ //随机分钱 $randRes = mt_rand(0,$randMax); $randRes = $randRes / $randRatio; if($money >= $randRes){ //余额充足 $res[$i] += $randRes; $money -= $randRes; } elseif($money > 0){ //余额不足 $res[$i] += $money; $money -= $money; } else{ //没有余额 break; } } /*--- 第三步:平均分配上一步剩余 ---*/ if($money > 0){ $avg = $money / $number; for($i=0;$i<$number;$i++){ $res[$i] += $avg; } $money = 0; } /*--- 第四步:打乱顺序 ---*/ shuffle($res); /*--- 第五步:格式化金额(可选) ---*/ foreach($res as $k=>$v){ //两位小数,不四舍五入 preg_match('/^\d+(\.\d{1,2})?/',$v,$match); $match[0] = round($match[0],2); $res[$k] = $match[0]; } return $res; }

本文共计469个文字,预计阅读时间需要2分钟。

红包金额能随机到多少呢?有没有可能超过XX元?

红包装配随机金额公式:红包总金额 / 红包数量 * 随机数(0.01 - 每个红包最小金额)* 总金额 / 红包数量 * 随机数(0.01 - 每个红包最小金额)返回数组函数hongbao($total, $num, $min=0.01) { $list=array(); for ($i=1; $i <=$num; $i++) { $safe_total=( $total / $num * rand(100) / 100 + $min ) * $total / $num * rand(100) / 100 + $min ; } return $list; }

红包金额能随机到多少呢?有没有可能超过XX元?

红包随机金额

/** * @param $total 总金额 * @param $num 红包数 * @param float $min 每个红包最小金额 * @return array */ function hongbao($total, $num, $min=0.01 ){ $list = array(); for ($i=1;$i<$num;$i++) { $safe_total=($total-($num-$i)*$min)/($num-$i); //随机安全上限 $money=mt_rand($min*100,$safe_total*100)/100; $total=$total-$money; array_push( $list, $money ); } array_push( $list, round($total, 2) ); shuffle($list); return $list; } //二 最小金额随机 function hongbao($total, $num ){ $ex = $total/$num/2; $min = mt_rand(1, $ex*100) / 100; //随机最小金额 $list = array(); for ($i=1;$i<$num;$i++) { $safe_total=($total-($num-$i)*$min)/($num-$i); $money=mt_rand($min*100,$safe_total*100)/100; $total=$total-$money; array_push( $list, $money ); } array_push( $list, round($total, 2) ); shuffle($list); return $list; } /** 三: * 红包生成算法 * @param $money 总金额 * @param $number 红包数量 * @param $ratio 浮动系数 */ function hongbao2($money,$number,$ratio = 0.5){ $res = array(); //结果数组 $min = ($money / $number) * (1 - $ratio); //最小值 $max = ($money / $number) * (1 + $ratio); //最大值 /*--- 第一步:分配低保 ---*/ for($i=0;$i<$number;$i++){ $res[$i] = $min; } $money = $money - $min * $number; /*--- 第二步:随机分配 ---*/ $randRatio = 100; $randMax = ($max - $min) * $randRatio; for($i=0;$i<$number;$i++){ //随机分钱 $randRes = mt_rand(0,$randMax); $randRes = $randRes / $randRatio; if($money >= $randRes){ //余额充足 $res[$i] += $randRes; $money -= $randRes; } elseif($money > 0){ //余额不足 $res[$i] += $money; $money -= $money; } else{ //没有余额 break; } } /*--- 第三步:平均分配上一步剩余 ---*/ if($money > 0){ $avg = $money / $number; for($i=0;$i<$number;$i++){ $res[$i] += $avg; } $money = 0; } /*--- 第四步:打乱顺序 ---*/ shuffle($res); /*--- 第五步:格式化金额(可选) ---*/ foreach($res as $k=>$v){ //两位小数,不四舍五入 preg_match('/^\d+(\.\d{1,2})?/',$v,$match); $match[0] = round($match[0],2); $res[$k] = $match[0]; } return $res; }