一个超级简单红包算法
<?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,钱数,时间

浙公网安备 33010602011771号