首页 > CMS教程 > 正文

PHP实现大转盘抽奖算法
2020-02-18 18:00:00   来源:   评论:0 点击:

本文通过具体的实例向大家介绍了PHP语言实现大转盘抽奖算法,希望对大家学习PHP抽奖有所帮助。 流程: 1 拼装奖项数组; 2 计算概率; 3 返回中奖情况。 代码如下:中奖概率 v 可以在后台设置,传到此方法中,注意传整数

本文通过具体的实例向大家介绍了PHP语言实现大转盘抽奖算法,希望对大家学习PHP抽奖有所帮助。

流程:

1.拼装奖项数组;

2.计算概率;

3.返回中奖情况。

代码如下:中奖概率 v 可以在后台设置,传到此方法中,注意传整数

functionget_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); } //计算中奖概率 functionget_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; }

相关热词搜索:

上一篇:PHP 8 能有多快?
下一篇:2020 招聘新变化,PHP程序员准备好了吗?

分享到: 收藏