由于项目需要,写了个简单的抽奖,根据rand随机数取得抽奖区间,然后再根据各个奖品的抽奖概率判断这个随机数是否在这个奖品区间内。

  

/**
* 抽奖函数
* 思路:先确定随机数是否大于奖品概率和,大于则不中奖,小于之后,则根据随机函数的数字区间,然后在遍历每条奖品的概率看是否在此区间内,确实抽中哪个奖品
* @param $sum[0]['chance'] 抽奖得奖总概率
* @param $luck_num 你的抽奖码
* @param $luck 得奖区间
* @param $size 小数点后位数
* $param $max
* $max=10,概率*10,$max=100,则*100
*/
public function luck(){
// 获取各个产品的中奖概率
$data=$this->db->select('*')->get('prize')->result_array();
// 判断奖品概率的小数点
$size=0;
foreach ($data as $key => $value) {
$x=explode(".",$value['chance']);
if(isset($x[1])){
if($size<strlen($x[1])){
$size=strlen($x[1]);
}
}
}
$max=10;
for($i=0;$i<$size;$i++){
$max=$max*10;
}
// 奖品总中奖概率
$sum=$this->db->select_sum('chance')->get('prize')->result_array();
// 根据随机函数确定是否中奖
$luck_num=rand(1,($max*100));
if($luck_num>($sum[0]['chance']*$max)){
return array('status'=>0);
}else{
// 设置初设为0
$luck=0;
foreach ($data as $key => $value) {
// 使每个奖品的概率相加
$luck=$luck+($value['chance']*$max);
if($luck_num<=$luck){
return array('status'=>1,'id'=>$value['id'],'file'=>$value['file']);
break;
}
}
}
}

转载于:https://www.cnblogs.com/zekeny/p/6677236.html

简单的抽奖function相关推荐

  1. 原生js完成一个简单的抽奖功能

    文章目录 前言 实现过程 1.前期准备 2.CSS美化 3.使用 js 完成抽奖功能 3.1 随机数模块 3.2 随机奖品 3.3 开始抽奖 3.4 点击开始抽奖 完整代码 HTML部分 CSS部分 ...

  2. matlab简单程序实例_visual basic VB.NET实例系列教程第一节(简单实用抽奖程序)...

    近期疫情原因,工作比较不忙,所以打算出一套零基础,VB.NET实例系列入门教程,实用又好玩,带大家进入VB的编程世界里,希望这套图文教程能帮到有需要的人! 第一节(简单实用抽奖程序) 内容准备:编译环 ...

  3. visual basic VB.NET实例系列教程第一节(简单实用抽奖程序)

    近期疫情原因,工作比较不忙,所以打算出一套零基础,VB.NET实例系列入门教程,实用又好玩,带大家进入VB的编程世界里,希望这套图文教程能帮到有需要的人! 第一节(简单实用抽奖程序) 内容准备:编译环 ...

  4. java抽奖程序_java怎么做出简单的抽奖程序?实例代码展示

    自从20世纪90年代以来,java编程语言的发展如火如荼,不仅仅应用于高新产业的壮大发展,还涉及到了我们的日常生活,为我们的生活带来了更多的便利与快捷方法.今天主要为大家介绍一下,如何用java做出一 ...

  5. Python制作一个简单的抽奖软件(二)

    Python制作一个简单的抽奖软件(二) 认识QT 因为都对 QT和tkinter都没用过,之前简单使用tkinter后发现,界面调整不太好弄.然后度娘了之后,QT是强大GUI库之一,很多人都推荐它. ...

  6. JS实现一个简单的抽奖系统

    本文主要介绍如何通过js中的setInterval()函数实现一个抽奖系统.在该系统中,我们不只是可以通过点击按钮来进行操作,还可以通过敲击键盘来进行操作.这里主要涉及到js中的事件处理程序,用到了o ...

  7. 简单php抽奖,基于PHP实现简单的随机抽奖小程序_PHP

    一个抽奖小程序,概论可控,也可某个奖品在前端显示,而程序中根本不可能获得!把所有的概率x10后相加起来,新数组中每项的值等于它前几个的和加上它本身. 然后随即生成一个0到最大数之间的一个数,通过循环查 ...

  8. 投色子抽奖游戏 html,jQuery实现简单的抽奖游戏

    今天要写的是,利用jQuery写一个抽奖的案例,页面包含四个组件,两个按钮分别是开始和停止的按钮.两个box,分别盛放人员和奖品.当点击开始按钮时,人员不停地进行切换.抽奖的box中显示等待抽奖结果. ...

  9. 用jQuery实现简单的抽奖页面

    简单原理:利用random,eq函数生成一个随机数,将其遍历出来. random() 方法返回随机生成的一个实数,它在[0,1)范围内. eq() 方法将匹配元素集缩减值指定 index 上的一个. ...

  10. 一个简单的抽奖转盘游戏

    在一个项目中要做一个游戏,在这个过程中做了一个简单的9宫格抽奖游戏.大体思路是,点击开始按钮,游戏开始.由一个逐步递增参数 drawStep 来控制格子的背景颜色的改变,游戏停止的位置参数 stopP ...

最新文章

  1. java8新特性_乐字节-Java8新特性-函数式接口
  2. B. The Cake Is a Lie
  3. linux过滤重复字符串,linux – 从制表符分隔文件中删除重复的单词/字符串
  4. 网络学习(三十三)Windows Server 2003 DFS(分布式文件系统)
  5. windows bat脚本编写_怎样在 txt 中用 2 行代码写出一个锁屏休息提醒脚本?
  6. 问一个 TCP 连接可以发多少个 HTTP 请求?
  7. python numpy库下载_Numpy库的下载与安装总结
  8. 菜鸟版JAVA设计模式—从笔记本电源线看适配器模式
  9. bzoj1127 洛谷3474 题解
  10. 精确字符串匹配(Zbox算法)
  11. Hive文件格式(表stored as 的五种类型)
  12. R语言基础图形绘制——箱线图
  13. 订单打标java_java 操作打标机的Dll 文件
  14. 计算机参数含义,电脑内存条参数各有什么含义?
  15. 我和ChatGPT聊了聊:它承认自己没有人性
  16. filecoin/lotus 官方开发文件中文翻译2019.12.17最新版本
  17. Ogre2.0 全新功能打造新3D引擎
  18. 识别图片中曲线并获取其坐标
  19. html中%3ch3%3e有颜色吗,在增强 iOS 通知系统这件事上,IFTTT 和 Pushover 谁做得更好?...
  20. android空包签名,安卓空包签名教程

热门文章

  1. pycharm remote 远程项目 同步 本地_手把手教你Pycharm远程连接服务器端项目进行本地开发调试...
  2. Mysql 自增主键
  3. mysql 查询指定日期的上一周的最后一天
  4. Hive 使用SQL统计出每个用户的累积访问次数
  5. WPF中自定义的DataTemplate中的控件,在Window_Loaded事件中加载机制初探
  6. Spring源码解析(五)——自定义标签解析
  7. windows 2008 64位oracle11g部署问题(1)之警告-启动database control时出错
  8. Ogre3D的GOOF的场景编辑器截图
  9. [转载]Hadoop 2.X 日志文件和MapReduce的log文件研究心得
  10. 可变参数列表来实现printf函数的输出