
简介: 以下编辑将与您分享彩票概率算法. 您可以阅读它. 有关更多详细信息,请关注全新的考试网络.
/ *
*经典概率算法,
* $ proArr是一个预设数组,
*假设数组为: array(100,200,300,400),
*起点是选择第一个数字是否在其1,1000的概率范围内,
*如果不是,则为概率空间,即k的值减去前一个数字的概率空间,
*在这种情况下,减去100,表示在1,900范围内选择了第二个数字.
*这样,总会有一个符合要求的数字.
*等同于触摸盒子中的某物,
*第一个不是,第二个不是,那么最后一个必须是.
*此算法简单且非常有效,

*关键是该算法已在我们以前的项目中使用,特别是在大数据项目中. 效率很好.
* / function get_rand($ proArr){
$ result ='';
//概率阵列的总概率精度
$ proSum = array_sum($ proArr);
//概率数组循环
foreach($ proArr as $ key => $ proCur){
$ randNum = mt_rand(1,$ proSum);
if($ randNum <= $ proCur){
$ result = $ key;
休息;
}其他{

$ proSum-= $ proCur;
}
}
未设置($ proArr);
返回$ result;}
/ *
*一系列奖励
*是一个二维数组,记录了本次抽奖的所有奖金信息,
*,其中id代表获胜级别,奖品代表奖品,v代表获胜的概率.
*请注意,v必须为整数,您可以将相应奖励的v设置为0,这意味着赢得奖励的机会为0,
*数组(底数)中v的总和,底数越大php抽奖概率算法,概率越准确.
*在此示例中,v的总和为100,则该平板电脑获胜的概率为1%,

*如果v的总和为10000,则获胜的概率为10,000.
*
* /
$ prize_arr = array(
'0'=> array('id'=> 1,'prize'=>'tablet','v'=> 1),
'1'=> array('id'=> 2,'prize'=>'数码相机','v'=> 5),
'2'=> array('id'=> 3,'prize'=>'扬声器设备','v'=> 10)php抽奖概率算法,
'3'=> array('id'=> 4,'prize'=>'4G USB闪存盘','v'=> 12),
'4'=> array('id'=> 5,'prize'=>'10Q coin','v'=> 22),
'5'=> array('id'=> 6,'prize'=>'下次无法击中它','v'=> 50),);
/ *
*对于每个前端页面请求,PHP循环奖励设置数组,

*使用概率计算函数get_rand获取中奖奖赏ID.
*将中奖奖金保存在$ res ['yes']数组中,
*其余未取消信息保存在$ res ['no']中,
*最后,将json编号数据输出到前端页面.
* / foreach($ prize_arr as $ key => $ val){
$ arr [$ val ['id']] = $ val ['v'];}
$ rid = get_rand($ arr); //根据概率获取奖励ID
$ res ['yes'] = $ prize_arr [$ rid-1] ['prize']; //中奖
unset($ prize_arr [$ rid-1]); //从数组中删除获奖的奖品,留下丢失的奖品
shuffle($ prize_arr); //对($ i = 0; $ i $ pr [] = $ prize_arr [$ i] ['prize'];} $ res ['no'] = $ pr; print_r($ res ['yes']);
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/ruanjian/article-253086-1.html
海里近距离对准他高价值目标