Heim  >  Artikel  >  Backend-Entwicklung  >  PHP实现发红包程序

PHP实现发红包程序

WBOY
WBOYOriginal
2016-07-23 08:54:53798Durchsuche

我们先来分析下规律。

设定总金额为10元,有N个人随机领取:

N=1 第一个

则红包金额=X元;

N=2 第二个

为保证第二个红包可以正常发出,第一个红包金额=0.01至9.99之间的某个随机数。

第二个红包=10-第一个红包金额;

N=3 第三个

红包1=0.01至9.99之间的某个随机数

红包2=0.01至(10-红包1-0.01)的某个随机数

红包3=10-红包1-红包2

……

于是我们得到一个规律,在分配当前红包金额时,先预留剩余红白所需最少金额,然后在0.01至总金额-预留金额间取随机数,得到的随机数就是当前红包分配的金额。

实际应用中,程序先将红包金额分配好,即发红包时,红包个数以及每个红包的金额都分配好了,那么用户来抢红包时,我们随机给用户返回一个红包即可。

红包分配代码:

  1. $total=20;//红包总金额
  2. $num=10;// 分成10个红包,支持10人随机领取
  3. $min=0.01;//每个人最少能收到0.01元
  4. for ($i=1;$i{
  5. $safe_total=($total-($num-$i)*$min)/($num-$i);//随机安全上限
  6. $money=mt_rand($min*100,$safe_total*100)/100;
  7. $total=$total-$money;
  8. echo '第'.$i.'个红包:'.$money.' 元,余额:'.$total.' 元
  9. ';
  10. }
  11. echo '第'.$num.'个红包:'.$total.' 元,余额:0 元';
复制代码

运行以上代码,会输出以下结果:

第1个红包,金额2.08元,余额17.92元

第2个红包,金额1.81元,余额16.11元

第3个红包,金额0.15元,余额15.96元

第4个红包,金额1.61元,余额14.35元

第5个红包,金额1.11元,余额13.24元

第6个红包,金额1.51元,余额11.73元

第7个红包,金额1.21元,余额10.52元

第8个红包,金额2.58元,余额7.94元

第9个红包,金额5.4元,余额2.54元

第10个红包,金额2.54元,余额0元

原文 http://www.helloweba.com/view-blog-313.html
发红包, PHP


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:PHP实现快速排序算法 Nächster Artikel:PHP把文本转换成图片