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 相关文章推荐
PHP5中新增stdClass 内部保留类
Jun 13 PHP
Php header()函数语法及使用代码
Nov 04 PHP
深入理解PHP中的global
Aug 19 PHP
php计算两个文件相对路径的方法
Mar 14 PHP
php实现通过ftp上传文件
Jun 19 PHP
PHP生成短网址方法汇总
Jul 12 PHP
浅谈php中curl、fsockopen的应用
Dec 10 PHP
php实现基于PDO的预处理示例
Mar 28 PHP
PHP基于自定义函数实现的汉字转拼音功能实例
Sep 30 PHP
PHP静态延迟绑定和普通静态效率的对比
Oct 20 PHP
Laravel框架模板继承操作示例
Jun 11 PHP
PHP删除数组中指定值的元素常用方法实例分析【4种方法】
Aug 21 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
《忧国的莫里亚蒂》先导宣传图与STAFF公开
2020/03/04 日漫
一个ftp类(ini.php)
2006/10/09 PHP
php使用for语句输出三角形的方法
2015/06/09 PHP
php三种实现多线程类似的方法
2015/10/30 PHP
laravel框架语言包拓展实现方法分析
2019/11/22 PHP
使用Apache的rewrite
2021/03/09 Servers
会自动逐行上升的文本框
2006/06/30 Javascript
JavaScript小技巧 2.5 则
2010/09/12 Javascript
JQUERY对单选框(radio)操作的小例子
2013/04/25 Javascript
jQuery实现回车键(Enter)切换文本框焦点的代码实例
2014/05/05 Javascript
jQuery实现鼠标划过添加和删除class的方法
2015/06/26 Javascript
jQuery实现非常实用漂亮的select下拉菜单选择效果
2015/11/06 Javascript
jQuery hover事件简单实现同时绑定2个方法
2016/06/07 Javascript
Javascript随机标签云代码实例
2016/06/21 Javascript
jQuery给div,Span, a ,button, radio 赋值与取值
2016/06/24 Javascript
原生js实现自由拖拽弹窗代码demo
2016/06/29 Javascript
jQuery实现打开页面渐现效果示例
2016/07/27 Javascript
JS多物体实现缓冲运动效果示例
2016/12/20 Javascript
vue+vuex+axios+echarts画一个动态更新的中国地图的方法
2017/12/19 Javascript
vue2.0 element-ui中el-select选择器无法显示选中的内容(解决方法)
2018/08/24 Javascript
微信小程序实现动态显示和隐藏某个控件功能示例
2018/12/14 Javascript
Paypal支付不完全指北
2020/06/04 Javascript
JavaScript动态生成表格的示例
2020/11/02 Javascript
详谈python中冒号与逗号的区别
2018/04/18 Python
Python获取指定字符前面的所有字符方法
2018/05/02 Python
Python自动化导出zabbix数据并发邮件脚本
2019/08/16 Python
Python 爬虫性能相关总结
2020/08/03 Python
CSS3中border-radius属性设定圆角的使用技巧
2016/05/10 HTML / CSS
AmazeUi Tree(树形结构) 应用小结
2020/08/17 HTML / CSS
房地产广告策划方案
2014/05/15 职场文书
敲诈同学钱财检讨书范文
2014/11/18 职场文书
假如给我三天光明读书笔记
2015/06/26 职场文书
2016年小学教师师德承诺书
2016/03/25 职场文书
如何用python反转图片,视频
2021/04/24 Python
为什么你写的height:100%不起作用
2021/05/10 HTML / CSS
RestTemplate如何通过HTTP Basic Auth认证示例说明
2022/03/17 Java/Android