比如现在有5个奖品,分别是1.苹果 2.香蕉 3.橙子 4.葡萄 5.柚子
中奖机率如下:
苹果:10%
香蕉:5%
橙子:60%
葡萄:10%
柚子:5%
1.根据奖品个数和中奖机率定义一个奖品概率数组,总和为100;
1
2
3
4
5
6
7
8
|
$rate
= [10,5,60,10,15];
$sum
= 0;
$section
= [0];
for
(
$i
=0;
$i
<
count
(
$rate
);
$i
++)
{
$sum
+=
$rate
[
$i
];
$section
[] =
$sum
;
}
|
生成如下区间数组$section(0到100)
1
|
[0,10,15,75,85,100]
|
解释:0-10为苹果,10-15为香蕉,15-75为橙子,75-85为葡萄,85到100为柚子
2.定义随机数抽奖,抽奖代码如下
1
2
3
4
5
6
7
8
9
10
|
//定义一个随机数,如果该随机数落到哪个中奖区间,就中哪个奖品
$rand_num
= rand(1,100);
$length
=
count
(
$section
);
for
(
$i
= 0,
$j
= 1,;
$i
<
$length
;
$i
++,
$j
++)
{
if
(
$rand_num
>
$section
[
$i
] &&
$rand_num
<=
$section
[
$j
])
{
break
;
//此时的$j即为中奖产品的序号,结束循环
}
}
|