php简单中奖算法(实例)


Posted in PHP onAugust 15, 2017

今天遇到这样的一个问题  封装一个 抽奖概率函数 思前想后去网上找点资料吧,而且不止一种方法 这种我感觉还是比较容易的 还是那句话 实现功能的思路不止一种 代码也不止一种。

function get_rand($proArr) {
   $result = '';
 
   //概率数组的总概率精度
   $proSum = array_sum($proArr);
 
   //概率数组循环
   foreach ($proArr as $key => $proCur) {
     $randNum = mt_rand(1, $proSum);
 if ($randNum <= $proCur) {
   $result = $key;
   break;
 } else {
   $proSum -= $proCur;
 }
}
unset ($proArr);
return $result;
}


$prize_arr = array(
'0' => array('id'=>1,'prize'=>'平板电脑','v'=>0.1),
'1' => array('id'=>2,'prize'=>'数码相机','v'=>5),
'2' => array('id'=>3,'prize'=>'音箱设备','v'=>10),
'3' => array('id'=>4,'prize'=>'4G优盘','v'=>12),
'4' => array('id'=>5,'prize'=>'10Q币','v'=>22),
'5' => array('id'=>6,'prize'=>'下次没准就能中哦','v'=>50),
);


foreach ($prize_arr as $key => $val) {
$arr[$val['id']] = $val['v'];
}
$rid = 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;
echo json_encode($res,JSON_UNESCAPED_UNICODE);

以上这篇php简单中奖算法(实例)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
基于PHP与XML的PDF文档生成技术
Oct 09 PHP
新闻分类录入、显示系统
Oct 09 PHP
php数组函数序列之array_unique() - 去除数组中重复的元素值
Oct 29 PHP
PHP 透明水印生成代码
Aug 27 PHP
基于PHP选项与信息函数的使用详解
May 10 PHP
使用Sphinx对索引进行搜索
Jun 25 PHP
ThinkPHP采用GET方式获取中文参数查询无结果的解决方法
Jun 26 PHP
PHP中绘制图像的一些函数总结
Nov 19 PHP
PHP使用Pear发送邮件(Windows环境)
Jan 05 PHP
php中namespace及use用法分析
Dec 06 PHP
Yii2实现中国省市区三级联动实例
Feb 08 PHP
Laravel等框架模型关联的可用性浅析
Dec 15 PHP
PHP实现的随机红包算法示例
Aug 14 #PHP
详解PHP中的 input属性(隐藏 只读 限制)
Aug 14 #PHP
IOS 开发之NSDictionary转换成JSON字符串
Aug 14 #PHP
PHP+AjaxForm异步带进度条上传文件实例代码
Aug 14 #PHP
利用laravel搭建一个迷你博客实战教程
Aug 13 #PHP
利用laravel+ajax实现文件上传功能方法示例
Aug 13 #PHP
Laravel5.5新特性之友好报错以及展示详解
Aug 13 #PHP
You might like
中篇:安装及配置PHP
2006/12/13 PHP
介绍几个array库的新函数 php
2006/12/29 PHP
提示Trying to clone an uncloneable object of class Imagic的解决
2011/10/27 PHP
ie与session丢失(新窗口cookie丢失)实测及解决方案
2013/07/15 PHP
php新浪微博登录接口用法实例
2014/12/23 PHP
php查询whois信息的方法
2015/06/08 PHP
Yii 使用intervention/image拓展实现图像处理功能
2019/06/22 PHP
js压缩工具 yuicompressor 使用教程
2010/03/31 Javascript
jQuery 1.5.1 发布,全面支持IE9 修复大量bug
2011/02/26 Javascript
js性能优化 如何更快速加载你的JavaScript页面
2012/03/17 Javascript
JavaScript之IE的fireEvent方法详细解析
2013/11/20 Javascript
js实现拉幕效果的广告代码
2015/09/02 Javascript
jQuery拖动布局其结果保存到数据库
2015/10/09 Javascript
JS实现的页面自定义滚动条效果
2015/10/26 Javascript
获取JavaScript异步函数的返回值
2016/12/21 Javascript
jQuery中hover方法搭配css的hover选择器,实现选中元素突出显示方法
2017/05/08 jQuery
vue如何获取点击事件源的方法
2017/08/10 Javascript
jquery 键盘事件的使用方法详解
2017/09/13 jQuery
JS实现将链接生成二维码并转为图片的方法
2018/03/17 Javascript
Vuejs+vue-router打包+Nginx配置的实例
2018/09/20 Javascript
微信小程序实现侧边分类栏
2019/10/21 Javascript
Python基础之getpass模块详细介绍
2017/08/10 Python
Python之Scrapy爬虫框架安装及使用详解
2017/11/16 Python
基于python神经卷积网络的人脸识别
2018/05/24 Python
python反转列表的三种方式解析
2019/11/08 Python
在django中form的label和verbose name的区别说明
2020/05/20 Python
CSS3制作酷炫的三维相册效果
2016/07/01 HTML / CSS
html5组织内容_动力节点Java学院整理
2017/07/10 HTML / CSS
台湾旅游网站:灿星旅游
2018/10/11 全球购物
《手指教学》反思
2014/02/14 职场文书
2014年国庆节活动总结
2014/08/26 职场文书
失职检讨书大全
2015/01/26 职场文书
golang中切片copy复制和等号复制的区别介绍
2021/04/27 Golang
python 提取html文本的方法
2021/05/20 Python
QT与javascript交互数据的实现
2021/05/26 Javascript
解析目标检测之IoU
2021/06/26 Python