貌似有些不合理,麻烦大家帮忙指正指正!谢谢~

<?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随机抽奖的更多相关文章

  1. C#实现随机抽奖和冒泡排序

    随机抽奖程序 string[] s = new string[] { "A", "B", "C", "D", " ...

  2. JQ广告弹窗&随机抽奖————JQ

    1.JQ广告弹窗 <div id="flo"> <img src="image.jpeg"> </div> <scri ...

  3. php实现概率性随机抽奖代码

    1.初始数据: 权重越大,抽取的几率越高 [奖品1, 权重 5], [ 奖品2, 权重6], [ 奖品3, 权重 7], [ 奖品4, 权重2] 2.处理步骤: 1)N = 5 + 6 + 7 + 2 ...

  4. Android自己定义效果——随机抽奖

    那天逛android开源码的时候,看到一个wheel menu的自己定义效果,就是类似人家的那种转盘抽奖,把人家project看了下.认为非常好玩.可是不想在他上面改,于是就自己想了一个类似的随即抽奖 ...

  5. C语言:随机抽奖

    #include <stdio.h> #include <stdlib.h> //<stdlib.h>用于调用 rand(), #include <time. ...

  6. 随机抽奖 --java

    使用Math.random() 1.Math.random() 返回double类型. /** * 随机得到获奖名单 * @param assocs * @param prizeNumber * @r ...

  7. php随机抽奖实例分析

    <?php header('Content-type:text/html;charset=utf-8'); /** * 抽奖工具 */ class lottery_tool { protecte ...

  8. php按照奖品百分比随机抽奖代码分析

    这个忘记从哪里copy过来了 /** * 概率算法 * @param array $probability * @return integer|string */ function get_rand( ...

  9. 每天一个JS 小demo之“随机”抽奖。主要知识点:Math函数,数组方法,递归

    <!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"& ...

  10. Winform 随机抽奖小程序

    效果图: 主要代码: Form1.cs using System; using System.Drawing; using System.IO; using System.Runtime.Intero ...

随机推荐

  1. Swift —构造函数与存储属性初始化-备

    构造函数的主要作用是初始化实例,其中包括:初始化存储属性和其它的初始化.在Rectangle类或结构体中,如果在构造函数中初始化存储属性width和height后,那么在定义他们时就不需要初始化了. ...

  2. C# 注销掉事件,解决多播委托链表的问题

    c#的事件是多播委托.当绑定多个事件时,事件会依次触发,清除掉注册的委托链表:方法1  C# Code  12345678910111213141516171819202122232425262728 ...

  3. 动态SQL使用绑定变量

    SQL> begin   for i in 1..1000000    loop     execute immediate 'insert into p1 values(i)' ;     c ...

  4. 关于NAT穿透的一些理解

    前些天在知乎回答了一个智能家居远程控制方面的问题,感觉自己对无公网IP地址环境下的穿透问题有些了解.昨天同事拿来一个网络摄像头,安装在ADSL路由器上网的环境下,可以远程查看视频,效果还挺不错,问我厂 ...

  5. BZOJ1639: [Usaco2007 Mar]Monthly Expense 月度开支

    1639: [Usaco2007 Mar]Monthly Expense 月度开支 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 529  Solved: ...

  6. HDU_2026——将单词的首字母变大写

    Problem Description 输入一个英文句子,将每个单词的第一个字母改成大写字母.   Input 输入数据包含多个测试实例,每个测试实例是一个长度不超过100的英文句子,占一行.   O ...

  7. 求一个数组中第K小的数

    面试南大夏令营的同学说被问到了这个问题,我的第一反应是建小顶堆,但是据他说用的是快排的方法说是O(n)的时间复杂度, 但是后来经过我的考证,这个算法在最坏的情况下是O(n^2)的,但是使用堆在一般情况 ...

  8. HDU-1176(基础方程DP)

    Problem Description 都 说天上不会掉馅饼,但有一天gameboy正走在回家的小径上,忽然天上掉下大把大把的馅饼.说来gameboy的人品实在是太好了,这馅饼别处都不掉, 就掉落在他 ...

  9. 近 100 个 Linux 常用命令大全

    1.ls [选项] [目录名 | 列出相关目录下的所有目录和文件 -a 列出包括.a开头的隐藏文件的所有文件 -A 通-a,但不列出"."和".." -l 列出 ...

  10. Spring 基于注解零配置开发

    本文是转载文章,感觉比较好,如有侵权,请联系本人,我将及时删除. 原文网址:< Spring 基于注解零配置开发 > 一:搜索Bean 再也不用在XML文件里写什么配置信息了. Sprin ...