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 ...
随机推荐
- Activity的四种状态
Running状态:一个新的Activity启动入栈后,它在屏幕最前端,处于栈的最顶端,此时它处于可见并可和用户交互的激活状态.Paused状态:当Activity被另一个透明或者Dialog样式的A ...
- 模糊系统架构和简单实现--AForge.NET框架的使用(四)
原文:模糊系统架构和简单实现--AForge.NET框架的使用(四) 先说一下,为什么题目是简单实现,因为我实在没有弄出好的例子. 我原来用AForge.net做的项目中的模糊系统融入了神经网络和向量 ...
- php 读取 word
---恢复内容开始--- 首先安装com扩展: php.ini php.ini 确保有此语句 [PHP_COM_DOTNET] extension=php_com_dotnet.dll php.i ...
- 【HDOJ】1315 Basic
这道题目巨坑啊,注意__int64,int wa了一个下午. #include <cstdio> #include <cstring> #include <cstdlib ...
- AC自动机修正
#include<iostream> #include<cstdio> #include<cmath> #include<algorithm> #inc ...
- 【转】[教程]隐藏ActionBar中的MenuItem
原文网址:http://blog.csdn.net/appte/article/details/12104823 有时候我们需要在不同的时候改变ActionBar中MenuItem的项数,或者隐藏某些 ...
- codevs1906 最长递增子序列问题
题目描述 Description 给定正整数序列x1,..... , xn .(1)计算其最长递增子序列的长度s.(2)计算从给定的序列中最多可取出多少个长度为s的递增子序列.(3)如果允许在取出的 ...
- 为什么使用Redis
原文地址:http://igoder.iteye.com/blog/1969848 先解释一下软件编程中常见的一些概念: 抽象先于具象.这个抽象并非虚无的抽象,而是指事物尚未分化为具象之前的那个前体存 ...
- B树——思路、及C语言代码的实现
0.序 本人现读本科大二,这学期学习数据结构,老师为我们的期末作业布置一道任选题,而我一直以来都有听说B树是一棵挺神奇的树,所以我选择了它,当然更重要的原因是因为B树的难度最高,我喜欢做有挑战性的工作 ...
- HDU-1047(DP-二进制状态压缩)
Problem Description Ignatius has just come back school from the 30th ACM/ICPC. Now he has a lot of h ...