最近实现大转盘功能涉及到抽奖概率的算法问题,整理了一下相关代码,欢迎大家参考哈~~~

思路:

1. 录入中奖产品与中奖概率数据// 奖项id,奖品,概率

$prize_arr = array(

'0' => array('id'=>1,'prize'=>'平板电脑','v'=>2),

'1' => array('id'=>2,'prize'=>'数码相机','v'=>5),

'2' => array('id'=>3,'prize'=>'音箱设备','v'=>10),

'3' => array('id'=>4,'prize'=>'4G优盘','v'=>15),

'4' => array('id'=>5,'prize'=>'10Q币','v'=>30),

'5' => array('id'=>6,'prize'=>'空奖','v'=>5),

);

2. 计算中奖概率//计算中奖概率

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;

}

3. 返回中奖信息function get_prize($list = []){

//拼装奖项数组

$list_ids = array_column($list, 'id');

$list_vs = array_column($list, 'v');

// ID 为键,概率为值

$arr = array_combine($list_ids, $list_vs);

//根据概率获取奖项id

$rid = get_rand($arr);

//中奖项数组

$res['yes'] = $list[$rid-1];

//将中奖项从数组中剔除,剩下未中奖项

unset($list[$rid-1]);

// 重置索引

$pr = array_values($list);

//未中奖项数组

$res['no'] = $pr;

// 返回中奖数据

$result = [

'msg'   => '抽奖成功~',

'code'  => 0,

'data'  => $res['yes'],

];

return $result;

}

函数调用方法:$result = get_prize($prize_arr);

echo "

";

print_r($result);

结果如下:

转载请注明出处~~~~

PHP控制转盘抽奖代码,PHP 根据概率 实现抽奖转盘算法 代码相关推荐

  1. java代码实现希尔排序_Java希尔排序算法代码实现

    Java希尔排序算法代码实现 时间:2017-08-30     来源:华清远见JAVA学院 什么是Java希尔排序算法呢? 希尔排序算法实际上是一种分组插入的排序算法,又被称为缩小增量排序.今天华清 ...

  2. AHRS算法代码:磁力计+加计+陀螺版

    以下代码是上面捷联惯导算法代码的磁力计+加计+陀螺版,没仔细研究过,粗看看像是把磁阻mxyz的向量转到地理坐标系,然后用地理坐标系的正北向标准磁场向量取代变成bxyz?又转回机体坐标系变成wxyz,最 ...

  3. php中奖概率算法程序,PHP中奖概率的抽奖算法程序代码

    PHP中奖概率的抽奖算法程序代码 //id为奖次,prize为中奖信息,v为中奖概率$prize_arr = array( '0' => array('id' => 1, 'prize' ...

  4. php写彩票中奖代码,php实现自定义中奖项数和概率的抽奖函数示例

    本文实例讲述了php实现自定义中奖项数和概率的抽奖函数.分享给大家供大家参考,具体如下: /* * 一个抽奖类,精确到万分之一 * 三个步骤:1.接受一个中奖概率数组;2.接受一个抽奖种子;3.返回中 ...

  5. 转盘抽奖(主要:概率和JQ)

    转盘抽奖 涉及的重点:JQ特效,概率 逻辑设计: 1.把前端页面设计好,转盘可以用table标签做,样式设计好 2.控制器把抽奖物查询出来,有序输出到前端页面设计好的转盘上 3.写JQ特效,原理就是轮 ...

  6. php比赛票数造假算法,PHP可以修改概率的抽奖算法(例如转盘等,个人感觉蛮好用)...

    近几天要给网站加一个转盘抽奖的的功能,我们知道转盘抽奖这些一般情况是小件物品的中间概率远大于大件物品,这样一方面能安慰抽奖用户,另一方面对于抽奖获得的举办者不至于亏损,看下面的代码: //概率算法,6 ...

  7. php限制一天抽奖次数_PHP可以修改概率的抽奖算法(例如转盘等,个人感觉蛮好用)...

    近几天要给网站加一个转盘抽奖的的功能,我们知道转盘抽奖这些一般情况是小件物品的中间概率远大于大件物品,这样一方面能安慰抽奖用户,另一方面对于抽奖获得的举办者不至于亏损,看下面的代码: //概率算法,6 ...

  8. js抽奖事件——生成不同概率随机数

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 任务说明 一.任务要求 二.代码 1.关键代码 2.整体代码 总结 任务说明 js抽奖事件--生成不同概率随机数. 5支球队 ...

  9. JS简单实现:根据奖品权重计算中奖概率实现抽奖的方法

    本文主要介绍:使用 JS 根据奖品权重计算中奖概率实现抽奖的方法. 一.示例场景 纯爱小说 www.shupu.org 1.1.设置抽奖活动的奖项名称 奖项名称:["一等奖", & ...

最新文章

  1. mysql 全面知识点_Mysql知识点整理
  2. 《软件架构与设计模式》关于 抽象工厂模式 的一个小例子
  3. 算法竞赛进阶指南第一章--题解
  4. 阻塞队列BlockingQueue用法
  5. python判断ip能否ping通_使用Python测试Ping主机IP和某端口是否开放的实例
  6. Hadoop源生实用工具之distcp
  7. 【Maven篇】---解决Maven线上部署java.lang.ClassNotFoundException和no main manifest attribute解决方法...
  8. windows 常见环境变量(%AppData%、%TEMP%、%TMP%)
  9. iphone 目录大全
  10. 【Altium Designer2018设计简单的PCB文件实例】
  11. 全网最全网络数据采集(爬虫)指南
  12. 连接HDMI出现没声音
  13. java Runtime.exec方法详解
  14. 层次、网状、关系模型
  15. SwipeToLoadLayout布局中添加自定义控件仿美团、饿了吗等下拉效果
  16. vue路由——基础篇(二)
  17. 1、Centos7系统的初化始配置
  18. php 虚拟机速度慢,[译]PHP虚拟机(PHP Virtual Machine)
  19. springcloud五大神兽之Feign
  20. 佳能Canon PIXMA MG3000 打印机驱动

热门文章

  1. 那些《西游记》中你不知道的野史,信不信由你
  2. 第一章 SDN介绍 (附件3)【云计算,SDN,虚拟化三者关系】
  3. Oracle 数据库启动 startup和startup force的区别
  4. Oracle 11g 新特性简介
  5. dbms_xplan.display_cursor 获取执行过的sql的执行计划
  6. 软件实施培训前的准备工作
  7. Oracle12C的卸载过程
  8. linux函数的阻塞与非阻塞IO及错误处理
  9. 如何一步一步用DDD设计一个电商网站(十三)—— 领域事件扩展
  10. kvm cobbler无人值守批量安装操作系统