PHP实现转盘抽奖算法分享


Posted in PHP onApril 15, 2020

本文实例为大家分享了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; 
 }

效果图:

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

想要学习更多关于抽奖功能的实现,请参考此专题:抽奖功能

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

PHP 相关文章推荐
PHP insert语法详解
Jun 07 PHP
PHP获取搜索引擎关键字来源的函数(支持百度和谷歌等搜索引擎)
Oct 03 PHP
php stripslashes和addslashes的区别
Feb 03 PHP
php加速器eAccelerator的配置参数、API详解
May 05 PHP
ThinkPHP实现二级循环读取的方法
Nov 03 PHP
php基于socket实现SMTP发送邮件的方法
Mar 05 PHP
php计算指定目录下文件占用空间的方法
Mar 13 PHP
PHP使用内置函数生成图片的方法详解
May 09 PHP
10个值得深思的PHP面试题
Nov 14 PHP
php基于自定义函数记录log日志方法
Jul 21 PHP
Laravel重定向,a链接跳转,控制器跳转示例
Oct 22 PHP
PHP7 弃用功能
Mar 09 PHP
PHP cURL获取微信公众号access_token的实例
Apr 28 #PHP
详解php与ethereum客户端交互
Apr 28 #PHP
360搜索引擎自动收录php改写方案
Apr 28 #PHP
PHP使用Curl实现模拟登录及抓取数据功能示例
Apr 27 #PHP
PHP获取文件扩展名的常用方法小结【五种方式】
Apr 27 #PHP
PHP四种排序算法实现及效率分析【冒泡排序,插入排序,选择排序和快速排序】
Apr 27 #PHP
php-fpm服务启动脚本的方法
Apr 27 #PHP
You might like
不用iconv库的gb2312与utf-8的互换函数
2006/10/09 PHP
PHP判断IP并转跳到相应城市分站的方法
2015/03/25 PHP
PHP实现图片压缩
2020/09/09 PHP
PHP 计算至少是其他数字两倍的最大数的实现代码
2020/05/26 PHP
JS时间选择器 兼容IE6,7,8,9
2012/06/26 Javascript
Function.prototype.apply()与Function.prototype.call()小结
2016/04/27 Javascript
jquery实现ajax提交表单信息的简单方法(推荐)
2016/08/24 Javascript
jQuery模拟完美实现经典FLASH导航动画效果【附demo源码下载】
2016/11/09 Javascript
总结JavaScript在IE9之前版本中内存泄露问题
2018/04/28 Javascript
解决Angular2 router.navigate刷新页面的问题
2018/08/31 Javascript
简单谈谈javascript高级特性
2019/09/04 Javascript
javascript将16进制的字符串转换为10进制整数hex
2020/03/05 Javascript
使用JavaScript获取Django模板指定键值数据
2020/05/27 Javascript
Vue自定义表单内容检查rules实例
2020/10/30 Javascript
python实现备份目录的方法
2015/08/03 Python
如何处理Python3.4 使用pymssql 乱码问题
2016/01/08 Python
python如何查看系统网络流量的信息
2016/09/12 Python
Python爬虫番外篇之Cookie和Session详解
2017/12/27 Python
python dataframe astype 字段类型转换方法
2018/04/11 Python
python 搭建简单的http server,可直接post文件的实例
2019/01/03 Python
Python之循环结构
2019/01/15 Python
python读取ini配置的类封装代码实例
2020/01/08 Python
python+tifffile之tiff文件读写方式
2020/01/13 Python
Python猴子补丁Monkey Patch用法实例解析
2020/03/23 Python
Python 通过监听端口实现唯一脚本运行方式
2020/05/05 Python
Python Opencv图像处理基本操作代码详解
2020/08/31 Python
丝芙兰意大利官方网站:Sephora.it
2019/12/13 全球购物
.net面试题
2015/12/22 面试题
体育教学随笔感言
2014/02/24 职场文书
人力资源主管职责范本
2014/03/05 职场文书
鸿星尔克广告词
2014/03/21 职场文书
银行竞聘上岗演讲稿
2014/09/12 职场文书
标准离婚协议书范文下载
2014/11/30 职场文书
2015年预防青少年违法犯罪工作总结
2015/05/22 职场文书
学雷锋活动简报
2015/07/20 职场文书
美元符号 $
2022/02/17 杂记