<?php
$pack_num
= 10;
//红包数
$money
= 100;
//总钱数
//规则 1分钱是1 1元是100
$min
= 1;
//最小 不使用小数,写1 应该是0.01
$max
= 100/10*2*100;
//最大,注意,结果要/100
$packs
= [];
$max1
= 0.01;;
for
(
$i
=0;
$i
<
$pack_num
-1;
$i
++)
{
$x
= mt_rand(
$min
,
$max
) / 100;
//这里除以100就还原了 1分是0.01 1元 是1
if
(
$x
>
$max1
)
//找到分的最多的一个人.
{
$max1
=
$x
;
$max_index
=
$i
;
}
$money
-=
$x
;
$packs
[
$i
] =
$x
;
}
$packs
[] =
$money
;
//最后剩下的一个
if
(
$money
< 0.01){
//钱不够分的,出现低于最低标准的 这个一般是最后一个. 与最高分平均一下 2者一样的钱即可
$avg
= (
$money
+
$max1
)/2;
$packs
[
$pack_num
- 1] =
$avg
;
$packs
[
$max_index
] =
$avg
;
}
//入队 a队
var_dump(
$packs
);
//出队原理
//a队出列,b队入列. b队内容为 抢到的用户id,钱数,时间