php代码实现中奖概率的算法,可以用来抓,大轮抽奖等算法。

php代码实现中奖概率的算法,可以用来抓,大轮抽奖等算法。
大轮算法的概率在我们的日常生活中经常遇到,那么,基于PHP的代码是如何实现中奖概率算法的,下面用一个代码例子来介绍PHP中奖概率算法,代码简单易懂,并注释了如下具体代码:

< PHP
*
*经典概率算法,
* $ proarr是预先设置的阵列,
*假设数组是:数组(100200300400),
*开始是从他的概率范围内的11000个概率范围内筛选第一个数字,
*如果不是,概率空间,即,k的值,从现在的概率空间中减去。
*在这种情况下,减去100,也就是说,第二个数字在1900的范围内被筛选。
所以最终总会有一些要求。
*相当于在盒子里摸东西,
第一个不是,第二个不是,第三个不是,最后一个必须是。
*该算法简单高效。
*关键在于该算法已经在我们以前的项目中使用,特别是在具有大量有效数据的项目中。
* /
功能get_rand($ proarr){
结果=;
概率的总概率
$启源= array_sum($ proarr);
循环数组的概率
foreach(proarr美元美元美元关键=采购指){
randnum美元(1美元= mt_rand,启源);
如果(randnum美元美元采购指){
$结果=键;
打破;
{人}
$启源= $采购指;
}
}
unset($ proarr);
返回$结果;
}
*
*奖阵列
*是一个二维数组,记录所有奖项信息,
*代表中奖等级,奖品是奖品,V是中奖的可能性。
*注意V必须是整数,你可以把相应的奖励的V设为0,这意味着赢得这个奖的机会是0。
v(和数组基),更准确地反映基地的概率。
*在这种情况下,V的总和是100,那么赢得平板电脑奖金的概率是1%。
*如果v的总和是10000,赢得奖品的概率是1 10000。
*
* /
prize_arr美元=阵列(
0=阵列('id' = > 1,'prize= >平板电脑,V = > 1),
1=阵列('id' = > 2,'prize= >,数码相机,V = > 5),
2=阵列('id' = > 3,'prize= >的音频,V = > 10),
3=阵列('id' = > 4,'prize= > '4g,V = > 12),
4=阵列('id' = > 5,'prize'=>10,Q,V = > 22),
5=阵列('id' = > 6,'prize= >也许下次可以哦,V = > 50),
);
*
* PHP循环奖励为前端页面的每个请求设置数组。
*通过概率计算函数get_rand获得中奖身份证。
*在数组既{是节约奖},
*和其余非奖信息保存在$ RES {没},
*最后将JSON数据输出到首页。
* /
foreach(prize_arr美元美元美元关键= val){
$ ARR { $瓦尔{ 'id' } } = { } $值V;
}
摆脱美元= get_rand($ ARR); / /根据一个ID奖获得概率
RES {是} =美元美元美元prize_arr { } { } rid-1 'prize '; / /
撤消($ prize_arr { $ rid-1 }); / /从数组中删除,其余的奖
洗牌($ prize_arr); / /排列的顺序打乱
为($我= 0;$我<计数(prize_arr美元美元);i++){
$公关{ } = { $ $ prize_arr我} { 'prize};
}
RES {没} =美元美元的公关;
print_r(合物);
接下来,分享一个基于获奖概率计算java实现的示例代码

做手机项目,有需求,做彩票活动!该奖项的计算是恶心,和用户应该改变每个获奖奖项的概率,并有一个有限数量的每day.123456奖,概率是不可用的,用户参与中没有一般是怎样的在一个点,可以使用随机类nextInt(int x)对在该区间范围内产生一个随机数的方法是产生几个奖,产生区间是动态的,石膏的源代码,仅供参考
包Mzone;
进口java.util.arraylist;
进口java.util.random;
公共类的动感地带{

* CopyRright(C)2009-04之间:
*项目:
*模块id:
*评论:概率计算
*使用JDK版本:
*作者:CH
*创建日期:2009-04-20
*修改
*修改日期:
*为什么修改
*版本:1
* /
静态随机r =新随机();
public static void main(String { } args){
赢得每个分母的概率
整数_5m =新的整数(5);
整数_500m =新的整数(30);
整数_ipod =新的整数(500);
整数_phone =新的整数(1000);
整数_notebook =新的整数(1500);
整数_jay =新的整数(50);
ArrayList列表=新的ArrayList();
如果(_5m.intvalue()!= 0)
list.add(_5m);
如果(_500m.intvalue()!= 0)
list.add(_500m);
如果(_ipod.intvalue()!= 0)
list.add(_ipod);
如果(_phone.intvalue()!= 0)
list.add(_phone);
如果(_notebook.intvalue()!= 0)
list.add(_notebook);
如果(_jay.intvalue()!= 0)
list.add(_jay);
计算/ LCM
在普通带(名单);
System.out.println(最小公倍数:+普通);
int=0;int b=0;int=0;int=0;int = 0;int=0;0;0;
int第一= 0;int = 0;int = 0;int四= 0;int = 0;int =第六= 0第五;int第三;
如果(_5m.intvalue()!= 0){
第一组共/ _5m.intvalue();
}
如果(_500m.intvalue()!= 0){
二=一+(普通/ _500m.intvalue());
否则,第二个=第一个;
如果(_ipod.intvalue()!= 0){
第三=二+(普通/ _ipod.intvalue());
}其他第三=第二;
如果(_phone.intvalue()!= 0){
四=第三+(普通/ _phone.intvalue());
}其他四=第三;
如果(_notebook.intvalue()!= 0){
Fifth = four + (common/_notebook.intValue ());
}其他第五=四;
如果(_jay.intvalue()!= 0){
第六=第五+(普通/ _jay.intvalue());
}其他第六=第五;
int时间= 30000; /循环
对于(int = i 0;i <次数;i + +){
int RI = getrandom(常见); / /随机数
如果(RI <第一= 0){
++;
否则如果(RI第一个<第二个> =){
B+;
如果(第二个< <第三> >){
C++;
}如果(RI第三< <四> =){
++;
}如果(RI四< <第五> =){
++;
}如果(RI第五< <第六> =){
F + +;
其他{ }
++;
}
}
System.out.println(5米价值++500m价值+ B + C + + ipodmp3:移动电话:+ + + +的笔记本电脑:+ + + +演唱会的门票:+ +谢谢你的参与:+ G);
}

*为公分母
* /
public static int GCD(int,int n){
而(真正的){
如果((m = m = n)= 0)
返回N;
如果((n = m = m)= 0)
返回M;
}
}

*求最小公倍数
* /
public static int GYS(int z,y){
int=0;
int=0;
C = gcd(Z,Y);
T=z;
返回T;
}

*几个数的最小公倍数
* /
public static int带(ArrayList列表){
int=1;
为(int i = 0;i < list.size();i++){
整数变量=(整数)list.get(我);
T = GYS(t,temp.intvalue());
}
返回T;
}

*产生随机数
* /
public static int getrandom(y){
int结果= r.nextint(Y);
返回结果;
}
}
免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部