php随机抽奖
貌似有些不合理,麻烦大家帮忙指正指正!谢谢~
<?php
header("content-type:text/html;charset=utf-8");
function getv($k,$arr){
for($j=$k;$j>=0;$j--){
if($j==0){
$tmp['b']=intval(0);
$tmp['e']=intval($arr[$j]['v']);
return $tmp;
}else{
$tmp['b']=intval($arr[$j-1]['e']);
$tmp['e']=intval($arr[$j-1]['e']+$arr[$j]['v']);
return $tmp;
}
}
} function dorand(){
//奖品
$prize_arr = array(
'0' => array('id'=>1,'prize'=>'平板电脑','v'=>3),
'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'=>'Q币10元','v'=>20),
'5' => array('id'=>6,'prize'=>'下次没准就能中哦','v'=>50),
);
//计算概率范围
for($i=0;$i<count($prize_arr);$i++){
$tmp = getv($i,$prize_arr);
$prize_arr[$i]['b'] = $tmp['b'];
$prize_arr[$i]['e'] = $tmp['e'];
} //获取概率
foreach ($prize_arr as $key => $val) {
$arr[$val['id']]['v'] = $val['v'];
$arr[$val['id']]['b'] = $val['b'];
$arr[$val['id']]['e'] = $val['e'];
$arr[$val['id']]['prize'] = $val['prize'];
//获取概率总和
$sum +=$arr[$val['id']]['v'];
}
///产生随机数
$r = mt_rand(1, $sum);
//var_dump($arr);
//遍历数据
foreach($arr as $k=>$v){
//exit;
//判断概率区间
if(($v['b']<=$r && $v['e']>=$r)){
//echo "随机数:".$r . "\t" . "概率".$v['b']."--".$v['e'] . "\t"."总概率:".$sum. "\n";
//返回中奖id
$id = $k;
return $prize = $arr[$k]['prize'];
break;
}
}
}
$one = 0;
$two = 0;
$three = 0;
$four = 0;
$five = 0;
$six = 0;
for($z=1;$z<=100;$z++){
if(dorand()=="平板电脑"){
$one++;
}
if(dorand()=="数码相机"){
$two++;
}
if(dorand()=="音箱设备"){
$three++;
}
if(dorand()=="4G优盘"){
$four++;
}
if(dorand()=="Q币10元"){
$five++;
}
if(dorand()=="下次没准就能中哦"){
$six++;
}
echo "\r\n第【".$z."】次中奖奖品为:".dorand()."<p>";
}
echo "平板电脑 :".(($one/100)*100)."%";
echo '<br>'; echo "数码相机 :".(($two/100)*100)."%";
echo '<br>'; echo "音箱设备 :".(($three/100)*100)."%";
echo '<br>'; echo "4G优盘 :".(($four/100)*100)."%";
echo '<br>'; echo "Q币10元 :".(($five/100)*100)."%";
echo '<br>'; echo "下次没准就能中哦 :".(($six/100)*100)."%";
echo '<br>'; ?>
php随机抽奖的更多相关文章
- C#实现随机抽奖和冒泡排序
随机抽奖程序 string[] s = new string[] { "A", "B", "C", "D", " ...
- JQ广告弹窗&随机抽奖————JQ
1.JQ广告弹窗 <div id="flo"> <img src="image.jpeg"> </div> <scri ...
- php实现概率性随机抽奖代码
1.初始数据: 权重越大,抽取的几率越高 [奖品1, 权重 5], [ 奖品2, 权重6], [ 奖品3, 权重 7], [ 奖品4, 权重2] 2.处理步骤: 1)N = 5 + 6 + 7 + 2 ...
- Android自己定义效果——随机抽奖
那天逛android开源码的时候,看到一个wheel menu的自己定义效果,就是类似人家的那种转盘抽奖,把人家project看了下.认为非常好玩.可是不想在他上面改,于是就自己想了一个类似的随即抽奖 ...
- C语言:随机抽奖
#include <stdio.h> #include <stdlib.h> //<stdlib.h>用于调用 rand(), #include <time. ...
- 随机抽奖 --java
使用Math.random() 1.Math.random() 返回double类型. /** * 随机得到获奖名单 * @param assocs * @param prizeNumber * @r ...
- php随机抽奖实例分析
<?php header('Content-type:text/html;charset=utf-8'); /** * 抽奖工具 */ class lottery_tool { protecte ...
- php按照奖品百分比随机抽奖代码分析
这个忘记从哪里copy过来了 /** * 概率算法 * @param array $probability * @return integer|string */ function get_rand( ...
- 每天一个JS 小demo之“随机”抽奖。主要知识点:Math函数,数组方法,递归
<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"& ...
- Winform 随机抽奖小程序
效果图: 主要代码: Form1.cs using System; using System.Drawing; using System.IO; using System.Runtime.Intero ...
随机推荐
- 用PYTHON实现将电脑里的所有文件按大小排序,便于清理
嘿嘿,慢慢找到写代码的感觉了. 这个小程序涉及的东东还是很多的,数据结构的设计,错误的处理,快速字典排序,文件数值调整.... import os,os.path import glob SUFFIX ...
- Linux标准输入、输出和错误和文件重定向(转) --- good
标准输入.输出和错误 当我们在shell中执行命令的时候,每个进程都和三个打开的文件相联系,并使用文件描述符来引用这些文件.由于文件描述符不容易记忆,shell同时也给出了相应的文件名.下面就是这些文 ...
- Netbeans 学习
1.NetBeans快捷键: 1.完成代码:ctrl+\ //任何地方按下此组合键,均会提示相应的参考字段: 2.错误提示:alt + enter //顾名思义,当系统报错时,按下此组合可以查看系统提 ...
- Linux系统编程(35)—— socket编程之TCP服务器的并发处理
我们知道,服务器通常是要同时服务多个客户端的,如果我们运行上一篇实现的server和client之后,再开一个终端运行client试试,新的client就不能能得到服务了.因为服务器之支持一个连接. ...
- CSS3/HTML5实现漂亮的分步骤注册登录表单
分步骤的登录注册表单现在也比较多,主要是能提高用户体验,用户可以有选择性的填写相应的表单信息,不至于让用户看到一堆表单望而却步.今天和大家分享的就是一款基于HTML5和CSS3的分步骤注册登录表单,外 ...
- hackerrank:Almost sorted interval
题目链接:https://www.hackerrank.com/challenges/almost-sorted-interval 题目大意: 定义一个“几乎单调”区间(区间最小值在最左面,最大值在最 ...
- Node开发入门
介绍 Node.js采用google的V8虚拟机来解释和执行javascript,也就是允许脱离浏览器环境运行javascript代码. Hello World 婴儿说的第一个字一般是"妈& ...
- 介绍一款超实用的演讲必备工具 ZoomIt
最近在整理以前的文件时,发现躺在某个角落的一个超好的实用的小工具——ZoomIt.此工具是 SysinternalsSuite(已被MS收购)众多实用工具的一个. 相信大家在演讲时,经常需要调整屏幕文 ...
- i&1、负数二进制
if(i&1==1) 表示 如果是 奇数 则...i&1 -- 按位与运算,取 2进制整数 i 的最低位,如果最低位是1 则得1,如果最低位是0 则得0. 奇数 i 的最低位 是1,偶 ...
- Javascript:sort()方法快速实现对数组排序
定义和用法: sort() 方法用于对数组的元素进行排序. 语法: arrayObject.sort(sortby) 注释:sortby,可选,规定排序顺序,必须是函数. 说明: 如果调用该方法时没有 ...