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

<?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. RSA 加密

    iOS开发教程-iOS中的RSA加解密 在移动应用开发中常常遇到数据传输安全性的问题,尤其是在账户安全以及支付场景中的订单数据.或支付信息的传输中,正规的公司一定会要求对数据进行加密,当然有创业初期的 ...

  2. Swift—Cocoa Touch设计模式-备

    目标(Target)与动作(Action)是iOS和OS X应用开发的中事件处理机制.   问题提出 如图所示是一个ButtonLabelSample案例设计原型图,其中包含一个标签和一个按钮,当点击 ...

  3. 转:fopen与open可以转换吗

    绝对不可以.fopen是C运行库级别的函数,而open是system call的wrapper routine.fopen返回FILE *的指针,这个结构本身维护着一些关于这个文件的信息,而open返 ...

  4. MCS-51单片机内部结构

    8051是MCS-51系列单片机的典型产品,我们以这一代表性的机型进行系统的讲解. 8051单片机包含中央处理器.程序存储器(ROM).数据存储器(RAM).定时/计数器.并行接口.串行接口和中断系统 ...

  5. hibernate 映射<四>多对一双向映射

    学生和班级的例子来说,多个学生可以对应一个班级. 1.站在学生角度来说,学生就是多端.那么我们可以通过多对一来维护2者的关系. 2.站在班级的角度来说,班级就是一端.那么我们可以通过一对多啦维护2者的 ...

  6. Android中ListView通过BaseAdapter实现数据的绑定

    1. public class ListFiles extends Activity { ListView Listview=null; protected void onCreate(Bundle ...

  7. RenderBody, RenderPage and RenderSection methods in MVC 3

    原文地址:http://www.codeproject.com/Articles/383145/RenderBody-RenderPage-and-RenderSection-methods-in R ...

  8. puppet aix package 之rsync安装

    AIX中使用RPM安装RSync遇到的问题及解决办法 最近在折腾AIX的系统,它里面本来有一个包管理工具叫installp,但是俺不会用,也不知道从那里找包. 幸亏AIX提供了RPM的支持,所以安装软 ...

  9. linux比较指令comm、diff、grep -Ff

    Comm命令 如果想对两个有序的文件进行比较,可以使用comm命令. 语法:comm [- 123 ] file1 file2 说明:该命令是对两个已经排好序的文件进行比较.其中file1和file2 ...

  10. Xcode Build Setting Reference

    https://developer.apple.com/library/mac/documentation/DeveloperTools/Reference/XcodeBuildSettingRef/ ...