PHP实现转盘抽奖算法分享php实例

PHP实现转盘抽奖算法分享php实例

内容导读

收集整理的这篇技术教程文章主要介绍了PHP实现转盘抽奖算法分享php实例,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1838字,纯文字阅读大概需要3分钟

内容图文

这篇文章主要为大家详细介绍了PHP实现大转盘抽奖算法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了PHP实现转盘抽奖算法的具体代码,供大家参考,具体内容如下

流程:

1.拼装奖项数组

2.计算概率

3.返回中奖情况

代码如下:

中奖概率 ' v ' 可以在后台设置,传到此方法中,注意传整数

function get_gift(){

 //拼装奖项数组

 // 奖项id,奖品,概率

$prize_arr = array(


 '0' => array('id'=>1,'prize'=>'平板电脑','v'=>0),


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


 '2' => array('id'=>3,'prize'=>'音箱设备','v'=>0),


 '3' => array('id'=>4,'prize'=>'4G优盘','v'=>5),


 '4' => array('id'=>5,'prize'=>'10Q币','v'=>0),


 '5' => array('id'=>6,'prize'=>'空奖','v'=>5),


);


foreach ($prize_arr as $key => $val) {


 $arr[$val['id']] = $val['v'];//概率数组


}


$rid = $this->get_rand($arr); //根据概率获取奖项id


$res['yes'] = $prize_arr[$rid-1]['prize']; //中奖项


unset($prize_arr[$rid-1]); //将中奖项从数组中剔除,剩下未中奖项


shuffle($prize_arr); //打乱数组顺序


for($i=0;$i<count($prize_arr);$i++){


 $pr[] = $prize_arr[$i]['prize']; //未中奖项数组

 }


$res['no'] = $pr;

 // var_dump($res);



 if($res['yes']!='空奖'){


 $result['status']=1;


 $result['name']=$res['yes'];

 }else{


 $result['status']=-1;


 $result['msg']=$res['yes'];

 }


//return $result;

 var_dump($result);
}
 //计算中奖概率
function get_rand($proArr) {

 $result = '';

 //概率数组的总概率精度

 $proSum = array_sum($proArr);

 // var_dump($proSum);
 //概率数组循环

 foreach ($proArr as $key => $proCur) {


$randNum = mt_rand(1, $proSum); //返回随机整数

 if ($randNum <= $proCur) {


 $result = $key;


 break;


} else {


 $proSum -= $proCur;


}

 }

 unset ($proArr);

 return $result;

}

效果图:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持Gxl网。

您可能感兴趣的文章:

PHP使用curl_multi实现并发请求的方法示例php技巧

PHP性能测试工具xhprof安装与使用方法详解php技巧

PHP实现通过strace定位故障原因的方法php技巧

以上就是PHP实现转盘抽奖算法分享php实例的详细内容,更多请关注Gxl网其它相关文章!

内容总结

以上是为您收集整理的PHP实现转盘抽奖算法分享php实例全部内容,希望文章能够帮你解决PHP实现转盘抽奖算法分享php实例所遇到的程序开发问题。 如果觉得技术教程内容还不错,欢迎将网站推荐给程序员好友。

内容备注

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。


本文关键词:

联系我们

在线咨询:点击这里给我发消息

邮件:w420220301@qq.com