b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

PHP获胜概率算法

电脑杂谈  发布时间:2020-06-21 08:03:27  来源:网络整理

php 抽奖概率算法_vb抽奖代码 概率_php抽奖概率算法

<!-?php

/ *

*经典概率算法,

* $ proArr是一个预设数组,

*假设数组为: array(100,200,300,400),

*从1,1000的概率范围开始,筛选第一个数字是否在其出现概率范围内,

*如果不是,则为概率空间,即k的值减去前一个数字的概率空间,

*在此示例中,减去100,表示在1,900范围内选择了第二个数字.

*通过这种方式进行筛选后,总会有一个符合要求的数字.

*等同于触摸盒子中的某物,

*第一个不是,第二个不是,那么最后一个必须是.

*此算法简单且非常有效,

php抽奖概率算法_php 抽奖概率算法_vb抽奖代码 概率

*关键是该算法已在我们以前的项目中使用,特别是在大数据项目中. 效率很好.

* /

functionget_rand($ proArr){

$ result ='';

//概率阵列的总概率精度

$ proSum = array_sum($ proArr);

//概率数组循环

foreach($ proArras $ key =-> $ proCur){

$ randNum = mt_rand(1,$ proSum);

if($ randNum <= $ proCur){

$ result = $ key;

休息;

php 抽奖概率算法_php抽奖概率算法_vb抽奖代码 概率

}其他{

$ proSum-= $ proCur;

}

}

unset($ proArr);

return $ result;

}

/ *

*奖励阵列

*是一个二维数组,记录了本次抽奖的所有奖金信息php抽奖概率算法

*其中id代表获胜等级,奖品代表奖品,v代表获胜的概率.

*请注意,v必须为整数,您可以将相应奖励的v设置为0,这意味着获奖的机会为0,

php抽奖概率算法_php 抽奖概率算法_vb抽奖代码 概率

*数组(底数)中v的总和,底数越大,概率越准确.

*在此示例中,v的总和为100,则赢得相应平板电脑的概率为1%,

*如果v的总和为10000,则获胜的概率为10,000.

* /

$ prize_arr = array(

'0'=> array('id'=> 1,'prize'=>'Tablet PC','v'=> 1)php抽奖概率算法

'1'=> array('id'=> 2,'prize'=>'数码相机','v'=> 5),

'2'=> array('id'=> 3,'prize'=>'扬声器设备','v'=> 10),

'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 抽奖概率算法_vb抽奖代码 概率_php抽奖概率算法

/ *

*每次前端页面请求,PHP循环奖励设置数组

*通过概率计算函数get_rand获取中奖ID.

*将获胜奖金保存在数组$ res ['yes']中,

*剩余的未赢得信息将保存在$ res ['no']中,

*最后将json编号数据输出到前端页面.

* /

foreach($ prize_arras $ 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); //随机排列数组的顺序

for($ i = 0; $ i


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/ruanjian/article-253082-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      热点图片
      拼命载入中...