您的位置:首页 > 其它

简单的红包分配算法

2016-01-12 18:14 260 查看
今天在群里听朋友说公司要他写一个红包分配算法,闲来无事,就临时帮他写了一下。 废话不多说,直接上代码:

$num = 3; //红包个数
$total = 10; //红包总金额

$scale = array(); //比例数组
for($i=0; $i<$num; $i++){
$scale[] = rand(1,100);
}

$count = array_sum($scale); //总比例

foreach($scale as $key=>$val){
$total * ($val/count); //循环依次得到每个人领的红包,需要做下小数点处理。
}

实现思路大概是这样的 :

 如果将10块钱发3个红包 , 那就产生3个1-100 之间的随机数。   比如  5   64   21  。

 5分别占这3个 数总和的  5/(5+64+21) = 5/90 约等于 0.05

那就用 10块钱的红包金额  乘 0.05

就是第一个人得到的红包了

在用64/(5+64+21) = 64/90 = ...

得到第二个人得到的红包,依次类推。

 这样是公平的 , 

因为产生随机数 都是从1-100
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  算法