1. 微信发红包是比较流行的一件事情,老老少少都会使用微信发红包,接下来,小编给大家分享在生活中常碰到的一个php实现微信发红包程序的算法,希望这个程序对大家在做微信卡发的朋友有所帮助
2.  使用PHP发红包,当我们输入红包数量和总金额后,PHP会根据这两个值进行随机分配每个金额,保证每个人都能领取到一个红包,每个红包金额不等,就是要求红包金额要有差异,所有红包金额总额应该等于总金额。
3.  首先给大家分析下规律。
4.  设定总金额为10元,有N个人随机领取:
5. N=1 第一个
6.  则红包金额=X元;
7. N=2 第二个
8. 
9.  为保证第二个红包可以正常发出,第一个红包金额=0.01至9.99之间的某个随机数。
10. 
11.  第二个红包=10-第一个红包金额;
12. 
13. N=3 第三个
14. 
15.  红包1=0.01至9.99之间的某个随机数
16. 
17.  红包2=0.01至(10-红包1-0.01)的某个随机数
18. 
19.  红包3=10-红包1-红包2
20. 
21.  ……
22. 
23.  于是我们得到一个规律,在分配当前红包金额时,先预留剩余红白所需最少金额,然后在0.01至总金额-预留金额间取随机数,得到的随机数就是当前红包分配的金额。
24. 
25.  实际应用中,程序先将红包金额分配好,即发红包时,红包个数以及每个红包的金额都分配好了,那么用户来抢红包时,我们随机给用户返回一个红包即可。
26. 
27.  红包分配代码:
28. $total=20;//红包总金额 
29. $num=10;// 分成10个红包,支持10人随机领取 
30. $min=0.01;//每个人最少能收到0.01元 
31.  for ($i=1;$i<$num;$i++) 
32.  { 
33.  $safe_total=($total-($num-$i)*$min)/($num-$i);//随机安全上限 
34.  $money=mt_rand($min*100,$safe_total*100)/100; 
35.  $total=$total-$money; 
36.  echo '第'.$i.'个红包:'.$money.' 元,余额:'.$total.' 元 '; 
37.  }
38. echo '第'.$num.'个红包:'.$total.' 元,余额:0 元';
39.  
40. 
41.  运行以上代码,会输出以下结果:
42. 
43.  第1个红包,金额2.08元,余额17.92元
44. 
45.  第2个红包,金额1.81元,余额16.11元
46. 
47.  第3个红包,金额0.15元,余额15.96元
48. 
49.  第4个红包,金额1.61元,余额14.35元
50. 
51.  第5个红包,金额1.11元,余额13.24元
52. 
53.  第6个红包,金额1.51元,余额11.73元
54. 
55.  第7个红包,金额1.21元,余额10.52元
56. 
57.  第8个红包,金额2.58元,余额7.94元
58. 
59.  第9个红包,金额5.4元,余额2.54元
60. 
61.  第10个红包,金额2.54元,余额0元
62. 
63. 
64.  以上就是使用php实现微信发红包程序,希望对大家有所帮助