当前位置: 旋风说(旋风PHPer分享网)> 技术文章> 正文
不建议红包发一个运算一次,因为前期抢到大红包的概率大,后期抢到大红包的概率小,建议第一次就算好红包分别是多少,然后抢一个分配一个红包。这样才是最公平的。
那么,具体做法如下几步:
第一:发完红包就把这个红包的总额计算红包个数,每个红包应该多少钱,存到表里,表里面有这几个列:本表id、红包表中的红包id,金额,状态(1未发放2已发放),抢到的用户id(默认为0)
第二:抢红包的时候,去上面说的那个表中,找一下抢到这个红包对应的生成的金额数据们,读取一个作为抢的这个人的红包金额,并把状态改为2,然后把抢到的用户id改为抢的这个人的红包id
第三:显示(只显示已经抢到的)出来并存到抢到那个人那里。(同理,最大红包就是那个红包生成的金额中最大的红包)
红包生成代码如下:
<?php header('Content-type:text/html;charset=utf-8'); function randPacket($money,$nums){ $arr = []; $hes = 0; $hess =0; for ($i=0;$i<$nums;$i++){ $rand =rand(1,1000); $arr[]=$rand; $hes+=$rand; } $arr2 =[]; foreach ($arr as $key=>$value){ $round = round(($value/$hes)*$money,2); $arr2[] =$round; $hess+=$round; } if($money !=round($hess,2)){ $hesss =round($money-$hess,2); $arr2[0]=$arr2[0]+$hesss; } return $arr2; } //1块钱发五个红包 $getdata = randPacket(1,5); echo '最大红包:'.max($getdata); echo '<br />'; print_r($getdata);exit; ?>
运行五次,结果如下:
第一次:
最大红包:0.35
Array ( [0] => 0.03 [1] => 0.02 [2] => 0.34 [3] => 0.26 [4] => 0.35 )
第二次:
最大红包:0.27
Array ( [0] => 0.27 [1] => 0.2 [2] => 0.16 [3] => 0.22 [4] => 0.15 )
第三次:
最大红包:0.29
Array ( [0] => 0.29 [1] => 0.23 [2] => 0.17 [3] => 0.06 [4] => 0.25 )
第四次:
最大红包:0.41
Array ( [0] => 0.41 [1] => 0.1 [2] => 0.09 [3] => 0.25 [4] => 0.15 )
第五次:
最大红包:0.32
Array ( [0] => 0.19 [1] => 0.06 [2] => 0.32 [3] => 0.18 [4] => 0.25 )
当您发现内容错误或代码bug,以及下载链接无法使用等,请点击屏幕右下角的上报错误来进行提交,我们会尽快修正。
本程序所有源码和工具完全免费,当本网站内容如果侵犯了您的权益,请联系我们,我们会尽快处理,感谢您的合作。
上一篇: js倒计时方法(青哥总结)
下一篇: phpstudy安装redis拓展
相关文章
评论:
文明上网理性发言,请遵守 新闻评论服务协议