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初学者头疼问题总结
Oct 09 PHP
PHP数据流应用的一个简单实例
Sep 14 PHP
PHP静态调用非静态方法的应用分析
May 02 PHP
MyEclipse常用配置图文教程
Sep 11 PHP
一个php生成16位随机数的代码(两种方法)
Sep 16 PHP
Codeigniter购物车类不能添加中文的解决方法
Nov 29 PHP
php5.4以下版本json不支持不转义内容中文的解决方法
Jan 13 PHP
php实现parent调用父类的构造方法与被覆写的方法
Feb 11 PHP
php动态生成缩略图并输出显示的方法
Apr 20 PHP
学习php设计模式 php实现门面模式(Facade)
Dec 07 PHP
PHP的中使用非缓冲模式查询数据库的方法
Feb 05 PHP
PHP如何解决微信文章图片防盗链
Dec 09 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修改Linux或Unix口令的方法分享
2012/01/30 PHP
php Ubb代码编辑器函数代码
2012/07/05 PHP
PHP中time(),date(),mktime()区别介绍
2013/09/28 PHP
基于PHP实现商品成交时发送短信功能
2016/05/11 PHP
PHP实现数组array转换成xml的方法
2016/07/19 PHP
PHP读取CSV大文件导入数据库的实例
2017/07/24 PHP
php设计模式之单例模式用法经典示例分析
2019/09/20 PHP
JavaScript Undefined,Null类型和NaN值区别
2008/10/22 Javascript
利用jQuery插件扩展识别浏览器内核与外壳的类型和版本的实现代码
2011/10/22 Javascript
Javascript模块化编程(一)AMD规范(规范使用模块)
2013/01/17 Javascript
js中数组Array的一些常用方法总结
2013/08/12 Javascript
表格奇偶行设置不同颜色的核心JS代码
2013/12/24 Javascript
防止jQuery ajax Load使用缓存的方法小结
2014/02/22 Javascript
AngularJs学习第八篇 过滤器filter创建
2016/06/08 Javascript
简单实现js菜单栏切换效果
2017/03/04 Javascript
js中getBoundingClientRect的作用及兼容方案详解
2018/02/01 Javascript
通过jquery的ajax请求本地的json文件方法
2018/08/08 jQuery
浅谈Vue render函数在ElementUi中的应用
2018/09/06 Javascript
详解JavaScript中的坐标和距离
2019/05/27 Javascript
JS去除字符串最后的逗号实例分析【四种方法】
2019/06/20 Javascript
jquery实现简单拖拽效果
2020/07/20 jQuery
[01:51]2018年度CS GO最具人气外援-完美盛典
2018/12/16 DOTA
pycharm 使用心得(七)一些实用功能介绍
2014/06/06 Python
Python 判断图像是否读取成功的方法
2019/01/26 Python
python pyenv多版本管理工具的使用
2019/12/23 Python
Windows10+anacond+GPU+pytorch安装详细过程
2020/03/24 Python
浅谈pytorch中的BN层的注意事项
2020/06/23 Python
使用Python项目生成所有依赖包的清单方式
2020/07/13 Python
给校长的建议书300字
2014/05/16 职场文书
新学期开学标语
2014/06/30 职场文书
大学计划书范文800字
2014/08/14 职场文书
党小组评议意见
2015/06/02 职场文书
有关花店创业的计划书模板
2019/08/27 职场文书
十一月早安语录:把心放轻,人生就是一朵自在的云
2019/11/04 职场文书
两行代码解决Jupyter Notebook中文不能显示的问题
2021/04/24 Python
新手入门Mysql--sql执行过程
2021/06/20 MySQL