代码如下:
<?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
?>
解决思路如下:1)以数字区段来对应中奖情况例如有一、二、三等奖,各自的中奖概率分别为10%、20%、30%那么有如下划历灶扰分:1-10,一等奖;11-30,二等奖;31-60,辩陪三等奖,60以上,未中奖
2)产生一个1~100之间的随机数,看随机数属于哪个奖项区域,以确定中奖肢旦情况
没有作弊的一般是按次数,(当然也有概率因素)蠢亏,有作弊的一般是按时间,理论上没有作弊的话,可以这样实现概率,比如10/100000出现A,100/100000出现B,其他都出现C,那么实现这个要求可以生成一个100000以内的随机数,然后然后根据他进行判断,链档亏如果小于10,那么出现A,大于10小于110,出现B,大于110出现C,
上面的正常的不作弊的中奖概率生成,完全靠系统随机产生
不过对于一般的中奖FLASH,只要是附加了现实的金钱的话棚神,都会弄一些时间或者特殊的中奖控制措施,只要在前面的判断中加入时间的判断就可以实现了
一般的FLASH中奖都只是用FLASH来显示结果而已,生成随机数然后比较都是靠后台的ASP或者PHP脚本实现的,所以光靠FLASH最多只能说你可以没有限制的实现不停的抽奖(也就是不停的调用ASP或者PHP脚本),而不可能实现肯定抽中奖!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)