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 ...
随机推荐
- BZOJ 3240: [Noi2013]矩阵游戏
3240: [Noi2013]矩阵游戏 Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 1586 Solved: 698[Submit][Status ...
- 突破路由mac地址过滤思路
一.获取合法的mac地址 在拿到无线网络的密码时,主要思路就是,用类似airodump-ng这类监听软件(WildPackets OmniPeek,Kismet),获得合法客户端的mac地址,然后再更 ...
- 浅谈 “空指针、野指针、void*”
Author: JW. Zhou Date: 2014/7/2 一.空指针(0/NULL) 返回NULL和返回0是完全等价的,因为NULL和0都表示空指针,换句话说:空指针是什么,就是 ...
- Sum square difference
简单: e sum of the squares of the first ten natural numbers is, 12 + 22 + ... + 102 = 385 The square o ...
- ASM-51汇编出错信息表
1 Address Out of Range 一个被计值的目标地址超出了当前语句的范围.2 Badly Formed Argument 数字规定的类型中有非法数字存在.3 Illefal Equal ...
- Linux下如何发布Qt程序
在X11平台下qt程序,首先准备好程序中需要使用的资源,库和插件... 比如你的可运行程序取名叫作panel,那把你的panel,那些libQt*.so.4和libQt*.so.4.6.0(链接 ...
- COJ 0138 NOIP201108计算系数
NOIP201108计算系数 难度级别:A: 运行时间限制:1000ms: 运行空间限制:51200KB: 代码长度限制:2000000B 试题描述 给定一个多项式(ax + by)^k,请求出多项式 ...
- bzoj1965 [Ahoi2005]SHUFFLE 洗牌
Description 为了表彰小联为Samuel星球的探险所做出的贡献,小联被邀请参加Samuel星球近距离载人探险活动. 由于Samuel星球相当遥远,科学家们要在飞船中度过相当长的一段时间,小联 ...
- HDU-3661(贪心)
Problem Description In a factory, there are N workers to finish two types of tasks (A and B). Each t ...
- 数据库中的schema概念
原文地址:http://blog.sina.com.cn/s/blog_7952e89001010jlj.html 数据库的初学者往往会对关系型数据库模式(schema).数据库(database). ...