当前位置:首页 » 编程语言 » php抽奖概率算法

php抽奖概率算法

发布时间: 2023-05-19 18:48:52

❶ 抽奖的概率怎么计算

抽取一个红球的概率为:[5/(5+50+150)]*100%=2.44%
抽取2个红球的概率为:2.44%*{[4/(4+50+150)]*100%}=0.047824%
抽取3个红球的概率为:0.047824%*{[3/(3+50+150)]*100%}=0.0007078%
抽取1个黄球的概率为:50/205*100%=24.39%
抽取2个黄球的概率为:24.39%*[49/204*100%]=5.5858%
抽取3个黄球的概率为:5.5858%*[48/203*100%]=1.385%

❷ 如何用php制作有奖品(数量)的转盘抽奖

这个不是有key值么,抽到后把这个key值的给unset()
unset() 方法
注意如果你使用 unset() 方法,它是不会改变其他的键(key),如果你想对其他的键(key)重新整理排序,可以使用 array_values()。
<?php
$array = array(0 => "a", 1 => "b", 2 => "c");unset($array[1]);
//↑ 你要删除的数组元素值的键print_r($array);?>

输出结果:
Array (
[0] => a [2] => c)

❸ php取随机数概率算法

问题有点模糊,我先暂时把“保留两位小数”理解成“[输出的随机数]保留两位小数”,而非其他因素保留多少小数。
又把“1-10”,理解成包括1和10在内其两数之间的小数,
把10-50,理解成10.01到50.00之间的数,不包括10.00。以此类推。

<?php
functiongenRandom(){
$p=rand(1,100);
if($p<=60)$r=rand(100,1000);
elseif($p>60and$p<=85)$r=rand(1001,5000);
elseif($p>85and$p<=95)$r=rand(5001,10000);
else$r=rand(10001,20000);
return$r/100;
}
$a=array();
$total=50000;
for($i=0;$i<$total;$i++){
$c=genRandom();
if($c>=1and$c<=10)$p=0;
elseif($c>10and$c<=50)$p=1;
elseif($c>50and$c<=100)$p=2;
elseif($c>100and$c<=200)$p=3;
else$p=4;
if(!array_key_exists($p,$a))$a[$p]=1;
else$a[$p]++;
}
if(!array_key_exists(4,$a))$a[4]=0;
echo"总样本数".$total.'<br/>';
echo"1-10样本数".$a[0].',占'.($a[0]/$total*100).'%<br/>';
echo">10-50样本数".$a[1].',占'.($a[1]/$total*100).'%<br/>';
echo">50-100样本数".$a[2].',占'.($a[2]/$total*100).'%<br/>';
echo">100-200样本数".$a[3].',占'.($a[3]/$total*100).'%<br/>';
echo"其他样本数".$a[4].',占'.($a[4]/$total*100).'%<br/>';
总样本数50000
1-10样本数30052,占60.104%
>10-50样本数12404,占24.808%
>50-100样本数4993,占9.986%
>100-200样本数2551,占5.102%
其他样本数0,占0%

❹ 抽奖活动的中奖几率是怎么算的

中奖的概率就是用奖品的数量除以参与抽奖的总人数,得到的结果就是抽到该奖品的中奖概率。如果参与抽奖人数有800个人,奖品有5件,那么中奖的概率就是:5/800=0.625%

在国内彩市中头奖概率最低的是大乐透玩法,概率仅为2142万分之一。其次是双色球的头奖中出概率,为1772万分之一。


而美国最热门的两大彩种之一,兆彩(超级百万)的中头奖概率为1.75亿分之一,堪称史上难度最大的彩票玩法,也就是说,美国兆彩中头奖的概率仅为双色球的1/9.86。

概率,亦称“或然率”,它是反映随机事件出现的可能性大小。随机事件是指在相同条件下,可能出现也可能不出现的事件。

例如,从一批有正品和次品的商品中,随意抽取一件,“抽得的是正品”就是一个随机事件。设对某一随机现象进行了n次试验与观察,其中A事件出现了m次,即其出现的频率为m/n。

经过大量反复试验,常有m/n越来越接近于某个确定的常数(此论断证明详见伯努利大数定律)。该常数即为事件A出现的概率,常用P
(A) 表示。

❺ php取随机数概率算法

//首先定义概率数组
$Probability["1-10"]=0.6;
$Probability["11-50"]=0.25;
$Probability["51-100"]=0.10;
$Probability["101-200"]=0.05;
//扩大1000倍便于计算
foreach($Probabilityas$k=>$v){
$Probability[$k]=$v*1000;
}

$Num=0;
$Random=rand(1,1000);//生成随机数
foreach($Probabilityas$k=>$v){
if($Num<$Random&&$Random<=$v+$Num){
//进入这里表示随机数在哪一个范围内
$Range=explode("-",$k);
//生成范围区间的随机数
$Result=rand($Range[0],$Range[1]);
echo$Result;
break;
}else{
$Num+=$v;
}
}

❻ php生成随机数,1-15之间,2出现的概率是80% 然后其它数字出现的概率是10%

$rand = 0; // 定义rank随机变量
if(mt_rand(1,100) <= 80) { // 控制2出现的概率为80%
$rand = 2;
} else { // 剩余数字的概率为20%
$rand = mt_rand(2,15); // 排除掉2号位置,用1去补2号位
if($rand == 2) { // 当随机到2号位,则用1去补2号
$rand = 1;
}
}
echo $rand; // 输出结果

http://w3school.com.cn/php/func_math_mt_srand.asp

❼ php实现可以设置中奖概率的抽奖程序代码分享

这篇文章主要介绍了一个抽奖程序,要求一等奖的中奖概率是0.12%,二等奖中奖概率是3%,三等奖中奖概率是12%,其他中奖概率是都是谢谢惠顾
代码如下:
<?php
/**
*
抽奖
*
@param
int
$total
*/
function
getReward($total=1000)
{
$win1
=
floor((0.12*$total)/100);
$win2
=
floor((3*$total)/100);
$win3
=
floor((12*$total)/100);
$other
=
$total-$win1-$win2-$win3;
$return
=
array();
for
($i=0;$i<$win1;$i++)
{

$return[]
=
1;
}
for
($j=0;$j<$win2;$j++)
{

$return[]
=
2;
}
for
($m=0;$m<$win3;$m++)
{

$return[]
=
3;
}
for
($n=0;$n<$other;$n++)
{

$return[]
=
'谢谢惠顾';
}
shuffle($return);
return
$return[array_rand($return)];
}

$data
=
getReward();
echo
$data;
?>

❽ php一个抽奖函数(自定义中奖项数和概率)

解决思路如下:
1)以数字区段来对应中奖情况例如有一、二、三等奖,各自的中奖概率分别为10%、20%、30%那么有如下划分:1-10,一等奖;11-30,二等奖;31-60,三等奖,60以上,未中奖

2)产生一个1~100之间的随机数,看随机数属于哪个奖项区域,以确定中奖情况

❾ (概率问题)抽奖的概率计算是什么

(概率问题)抽奖的概率计算(1-1/3)*1*1/1=2/3。

如果是连续抽则激到1-3个的,而且是不放回抽,则:

(一个)=5/205=1/41。

(二个)=5/205*(4/204)=1/41*(1/51)=1/2091。

(三个)=5/205*(4/204)*(3/203)=1/141491。

因为只有2种选择,换或是不换。假设选换,第一次就抽中的概率是1/3,那么选换后就成了不中;抽不中的是2/3,选择换就是中;于是相当于选换中奖率2/3;如果选不换,同理得到中奖率是1/3。

概率

是度量孙物袜偶然事件发生可能性的数值。假如经过多次重复试验(用X代表),偶然事件(用A代表)出现了若干次(用Y代表)。以X作分母,Y作分子,形成了数值(用P代表)。在多次试验中,蚂逗P相对稳定在某一数值上,P就称为A出现的概率。如偶然事件的概率是通过长期观察或大量重复试验来确定,则这种概率为统计概率或经验概率。

❿ PHP金额越高中奖率越大,如何实现

你可以把输入的比率都转换成n/10000
然后按n来抽奖
比如1等奖1/1000 即 10/10000
2等奖 30/10000
3等奖 200/10000
4等奖3000/10000
那么10+30+200+3000=3240;
取随机数 r.Next(1,10001)
当0<r<=10 则为1等奖
当 10<r<=10+30 则中2等奖
当 10+30<r<=10+30+200 则中3等奖依次

根据金额判断他的概率

热点内容
我的世界撸树服务器 发布:2025-05-20 10:33:37 浏览:739
ftp搭建win7 发布:2025-05-20 10:06:06 浏览:82
访问坚果 发布:2025-05-20 10:06:02 浏览:394
ftpxlight 发布:2025-05-20 10:05:22 浏览:111
java的实验报告 发布:2025-05-20 10:02:06 浏览:528
豪华配置高电动轿车有哪些 发布:2025-05-20 10:01:59 浏览:487
哪些电脑配置低 发布:2025-05-20 09:34:16 浏览:955
地板网站源码 发布:2025-05-20 09:27:23 浏览:346
安卓视频转换器怎么使用 发布:2025-05-20 09:20:52 浏览:544
telnet批量脚本 发布:2025-05-20 09:11:58 浏览:627