介绍
利用PHP怎么实现一个随机红包算法?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
<强>一、整体设计强>
算法有很多种,可以自行选择,主要的“架构,是这样的,用复述,12月()命令去限流,用mysql去记录各种需要的数据
<强>二、红包算法强>
简便起见,红包金额用整数表示,假设每个红包里边有x个糖豆,每个人最少一个豆
第一种:每个红包的最大金额是:(剩余金额/剩余红包数)* 2,需要开始的时候预先分配给每个人一个豆
function randBean (total_bean美元,,total_packet美元) { 时间=美元才能min_bean 1; 时间=美元才能max_bean 5000; 时间=美元才能range 2; 时间=美元才能total_bean total_bean 美元;作用;total_packet 美元;*,min_bean美元;,//每个人预留一个最小值 时间=美元才能list []; 时间=美元才能min 1; 而才能(count($列表),& lt;, total_packet美元){ ,,,max 美元;=,地板(total_bean 美元/,total_packet美元),*,美元范围; ,,,bean 美元;=,兰德(min美元,,max); ,,,if (=$ bean & lt; max_bean 美元;作用;1),{ ,,,,,美元名单[],=,bean美元; ,,,,,total_bean 美元;-=,bean美元; ,,,} ,,} 美元才能列表[],=,total_bean美元;//剩余的金豆作为最后一个红包//合才能并 foreach 才能;(list 美元;as k 美元;=祝辞,美元v), { ,,,美元($ k)列表,+=,min_bean美元; ,,} return 才能;美元列表; }
多次统计
第二种,对其简单扩展一下,每个红包的最大金额是:(剩余金额/剩余红包数)* 3;但是要求每次最少发2个红包
第三种,线段法,随机生成几个数字,将一个直线分成几段,每段的长度(这个波动比较大,不是很平均,如果限制了每个红包的大小,会比较麻烦)
function abc (total_bean美元,,total_packet美元) { 时间=美元才能min 1; 时间=美元才能max total_bean 美元;1; 时间=美元才能list []; 时间=美元才能maxLength total_packet 美元;作用;1; 而才能(count($列表),& lt;,美元的最大长度),{ ,,,rand 美元;=,mt_rand (min美元,,max); ,,,空列表($[$兰德]),,,,($列表(兰德美元),=,兰德美元); ,,} 美元才能列表[0],=,0;,//第一个 美元才能列表(total_bean美元),=,total_bean美元;,//最后一个 排序列表($);才能,//不再保留索引 时间=美元才能beans []; for 才能;($ j=1;, j<美元;=$ total_packet;, $ j + +), { ,,,美元bean[],=,列表[j]美元美元,安康;美元列表(j - 1美元); ,,}//才能,return 豆类;美元 echo 才能;& # 39;& lt; pre> & # 39;;, print_r (bean)美元;,echo 函数($ bean); } abc (100000,, 3);
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注行业资讯频道,感谢您对的支持。