php 抽奖概率 随机数
- <?php
- $prize_arr = array(
- '0' => array('id' => 1, 'title' => 'iphone5s', 'v' => 5),
- '1' => array('id' => 2, 'title' => '联系笔记本', 'v' => 10),
- '2' => array('id' => 3, 'title' => '音箱设备', 'v' => 20),
- '3' => array('id' => 4, 'title' => '30GU盘', 'v' => 30),
- '4' => array('id' => 5, 'title' => '话费50元', 'v' => 10),
- '5' => array('id' => 6, 'title' => 'iphone6s', 'v' => 15),
- '6' => array('id' => 7, 'title' => '谢谢,继续加油哦!~', 'v' => 10),
- );
- foreach ($prize_arr as $key => $val) {
- $arr[$val['id']] = $val['v'];
- }
- $prize_id = getRand($arr); //根据概率获取奖品id
- $data['msg'] = ($prize_id == 7) ? 0 : 1; //如果为0则没中
- $data['prize_title'] = $prize_arr[$prize_id - 1]['title']; //中奖奖品
- echo json_encode($data);
- exit; //以json数组返回给前端
- function getRand($proArr) { //计算中奖概率
- $rs = ''; //z中奖结果
- $proSum = array_sum($proArr); //概率数组的总概率精度
- //概率数组循环
- foreach ($proArr as $key => $proCur) {
- $randNum = mt_rand(1, $proSum);
- if ($randNum <= $proCur) {
- $rs = $key;
- break;
- } else {
- $proSum -= $proCur;
- }
- }
- unset($proArr);
- return $rs;
- }
- ?>
=========================================
<?php
header("Content-Type: text/html; charset=utf-8");
$prize_arr = array(
'0' => array('id' => 1, 'url' => 'http://mp.weixin.qq.com/s/hyPRO4tJAl1cJaY97TGFvw', 'v' => 5),
'1' => array('id' => 2, 'url' => 'http://mp.weixin.qq.com/s/gD2MhdYAMx1PyA4jCdJtQQ', 'v' => 10),
'2' => array('id' => 3, 'url' => 'http://mp.weixin.qq.com/s/Ud_F_l6ZufGElkZwONzGbA', 'v' => 20),
'3' => array('id' => 4, 'url' => 'http://mp.weixin.qq.com/s/LA1lASoxuRdaZ13F8pQbNA', 'v' => 30),
'4' => array('id' => 5, 'url' => 'http://mp.weixin.qq.com/s/efZKG9GjrchhBR4zT5zU3A', 'v' => 10),
'5' => array('id' => 6, 'url' => 'http://mp.weixin.qq.com/s/ghisPsLG4OIFdehn6kZrUw', 'v' => 15),
'6' => array('id' => 7, 'url' => 'http://mp.weixin.qq.com/s/bltFJBXstWN43r0GiePzBw', 'v' => 10),
);
// echo "呵呵";
foreach ($prize_arr as $key => $val) {
$arr[$val['id']] = $val['v'];
}
// var_dump($arr);
$myid = myword($arr);
$data['url'] = $prize_arr[$myid-1]['url'];
$url = $data['url'];
echo "<script type='text/javascript'>window.location.href='$url';</script>";
function myword($str){
$rs = '';//中奖结果
$proSum = array_sum($str);//计算数组中所有值的和
//概率数组循环
foreach ($str as $k => $v) {
$word1 = mt_rand(1,$proSum); //生成更好的随机数
if( $word1 <= $v){
$rs = $k;
break;
}else{
$proSum -= $v;
}
}
return $rs;
}
?>
php 抽奖概率 随机数的更多相关文章
- php抽奖概率程序
抽奖概率思想: 1.给每一个奖项设置要给概率数,如下面所有奖品综合设置为100,iphone5s是5,也就是5% 2.然后通过php生成随机数函数生成一个在总概率之间的随机数 如:抽第一个奖品5s的时 ...
- 给定一个函数rand()能产生0到n-1之间的等概率随机数,问如何产生0到m-1之间等概率的随机数?
题目:给定一个函数rand()能产生1到n之间的等概率随机数,问如何产生1到m之间等概率的随机数? 先把问题特殊化,例如原题变为给定一个函数rand5(),该函数可以随机生成1-5的整数,且生成概率一 ...
- 面试题:给定一个函数rand()能产生1到m之间的等概率随机数,产生1到n之间等概率的随机数?
虽然TX的面试已经过去好几天了,然而惨痛的过程还历历在目.人生中第一次正式job面试就这么挂掉了.在于面试官的交流过程中,被问及了几个算法设计题,在今后几篇博文中,我一一总结与诸君分享. 1. 给定一 ...
- js抽奖概率随机取出数据(简单示例)
在平常活动开发当中,经常会碰到抽奖等类似的js功能,那么下面我们随机取数组中的一条来展示出来. ( 一 ) 无概率问题 var gift_ = ['apple pro一台','iphoneX一台',' ...
- [TS-A1489][2013中国国家集训队第二次作业]抽奖[概率dp]
概率dp第一题,开始根本没搞懂,后来看了09年汤可因论文才基本搞懂,关键就是递推的时候做差比较一下,考虑新加入的情况对期望值的贡献,然后推推公式(好像还是不太会推qaq...) #include &l ...
- 实例--post请求,完成一个抽奖程序概率的测试
一个web项目测试,测试抽奖概率的正确性,写了一个小代码,验证概率 post和get请求的一个工具类 package kankan_interface; import java.io.IOExcept ...
- Js 控制随机数概率
如: 取 1~10 之间的随机数,那么他们的取值范围是: 整数 区间 概率 1 [0,1) 0.1 2 [1,2) 0.1 3 [2,3) 0.1 4 [3,4) 0.1 5 [4,5) 0.1 6 ...
- jquery抽奖插件+概率计算
写了一个抽奖的jquery插件和计算概率的方法, 结合起来就是一个简单的概率抽奖, 不过实际项目中基本不会把抽奖概率的计算放在前端处理~. demo lottery.jquery.js $.fn.ex ...
- 抽奖随机算法的技术探讨与C#实现
一.模拟客户需求 1.1 客户A需求:要求每次都按照下图的概率随机,数量不限,每个用户只能抽一次,抽奖结果的分布与抽奖概率近似. 1.2 客户B需求:固定奖项10个,抽奖次数不限,每个用户只能抽一次, ...
随机推荐
- VS2017 调试不能命中断点问题
去掉勾
- TurnipBit开发板“趣味赛”:平衡力大比拼
让孩子在快乐自由的游戏中培养编程思维 平衡力大挑战是我们经常经常玩的的一个小游戏,脑补画面的话比较常见的是单腿平衡力大比拼,摇晃幅度小者胜利.游戏好玩归好玩,但是想要公平判断胜负却不容易.下面就教大家 ...
- Mongodb高级查询【二】
上一篇文章,写了mongodb常规操作,继续写入,本章主要讲高级查询,文本,聚集,大数据查询. Mongodb的查询语法是很多的,是NOSQL队伍中比较丰富的一个.当然有很多查询跟关系型查询无法相比. ...
- 第十章:Python の 网络编程基础(二)
本課主題 Python中的作用域补充 socketserver 源码 线程的介绍和操作实战 进程的介绍和操作实战 协程的介绍和操作实战 本周作业 Python中的作用域补充 Python世界里沒有块级 ...
- Java学习笔记20(String类应用、StringBuffer类、StringBuilder类)
1.获取指定字符串中大小写和数字的个数: package demo; public class StringTest { public static void main(String[] args) ...
- Python进阶内容(四)--- 迭代器(Iterator)与生成器(Generator)
迭代器 我们已经知道,可以直接作用于for循环的数据类型有以下几种: 一类是集合数据类型,如list.tuple.dict.set.str等: 一类是generator,包括生成器和带yield的ge ...
- HTML知识点之表示强调的主要元素
<h1>~<h6> 在HTML中,标题(Heading)元素共有6个级别的标签:<h1>~<h6>.它们都是块级元素.标题数字越小,字体就会越大,标题的 ...
- 7、ABPZero系列教程之拼多多卖家工具 修改注册功能
本篇开始进入重头戏,之前的几篇文章都是为了现在的功能作准备.前面教程已经讲到修改User表结构,接下来就需要修改注册逻辑代码. 注册页面 修改Register.cshtml,备注如下代码: 文件路径: ...
- CentOS 7 如何设置默认启动方式为命令行模式
1.首先需要有GUI图形界面,没有进安装 yum groupinstall "GNOME Desktop" "Graphical Administration Tools ...
- Django--进阶--中间件的使用
- 中间件是什么? 中间件是一个钩子框架,它们可以介入Django 的请求和响应处理过程.它是一个轻量级.底层的“插件”系统,用于在全局修改Django 的输入或输出. 每个中间件组件负责完成某个特定 ...