一个超级简单红包算法

  

  

<?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,钱数,时间
posted @ 2017-07-20 10:18  永杰本杰  阅读(481)  评论(0编辑  收藏  举报