抽奖概率算法

<?php
header("Content-Type: text/html; charset=UTF-8");
function dump($arr){
    echo ‘<pre>‘.print_r($arr,TRUE).‘</pre>‘;
}
/*概率算法
proArr array(100,200,300,400)
*/
function get_rand($proArr) {
    $result = ‘‘;
    $proSum = array_sum($proArr);
    foreach ($proArr as $key => $proCur) {
        $randNum = mt_rand(1, $proSum);
        if ($randNum <= $proCur) {
            $result = $key;
            break;
        } else {
            $proSum -= $proCur;
        }
    }
    unset ($proArr);
    return $result;
}
/*
获取中奖
*/
function  get_prize(){
$prize_arr = array(
    array(‘id‘=>1,‘prize‘=>‘平板电脑‘,‘v‘=>1),
    array(‘id‘=>2,‘prize‘=>‘数码相机‘,‘v‘=>1),
    array(‘id‘=>3,‘prize‘=>‘音箱设备‘,‘v‘=>1),
   array(‘id‘=>4,‘prize‘=>‘4G优盘‘,‘v‘=>1),
   array(‘id‘=>5,‘prize‘=>‘10Q币‘,‘v‘=>1),
   array(‘id‘=>6,‘prize‘=>‘下次没准就能中哦‘,‘v‘=>95),
);
foreach ($prize_arr as $key => $val) {
    $arr[$val[‘id‘]] = $val[‘v‘];
}
$ridk = get_rand($arr); //根据概率获取奖项id
$res[‘yes‘] = $prize_arr[$ridk-1][‘prize‘]; //中奖项
unset($prize_arr[$ridk-1]); //将中奖项从数组中剔除,剩下未中奖项
shuffle($prize_arr); //打乱数组顺序
for($i=0;$i<count($prize_arr);$i++){
    $pr[] = $prize_arr[$i][‘prize‘];
}
$res[‘no‘] = $pr;
return $res;
}
dump(get_prize());

博客园参考文章

github参考源码

原文地址:https://www.cnblogs.com/webclz/p/10712205.html

时间: 2024-11-06 09:40:44

抽奖概率算法的相关文章

php抽奖概率算法

$arr=array(    5=>'奖项一',    10=>'奖项二',    60=>'奖项三',    25=>'奖项四'); $pool=array(); foreach($arr as $k=>$v){ echo count($pool).'<br>'; $pool+=array_fill(count($pool),$k,$v); }echo '<pre>';print_r($pool);echo $pool[rand(0,99)]; ph

paip.刮刮卡砸金蛋抽奖概率算法跟核心流程.

#---抽奖算法需要满足的需求如下: 1 #---抽奖核心流程 1 #---问题???更好的算法 2 #---实际使用的扩展抽奖算法(带奖品送完判断和每用户最大中奖判断) 2 #-------网上的抽奖算法Php 3 #----java版本的.. 4 参考 5 #---抽奖算法需要满足的需求如下: 1.可以控制中奖的概率 2.具有随机性 3.最好可以控制奖品的数量 4.根据用户ID或者ip.手机号.QQ号等条件限制抽奖次数 初期就这些需求,然后根据网上的资料,采用了一种阶段式抽取的方法,大家下面

经典抽奖概率算法

php中奖概率算法,可用于刮刮卡,大转盘等抽奖算法.用法很简单,代码里有详细注释说明,一看就懂 <?php /* * 经典的概率算法, * $proArr是一个预先设置的数组, * 假设数组为:array(100,200,300,400), * 开始是从1,1000 这个概率范围内筛选第一个数是否在他的出现概率范围之内, * 如果不在,则将概率空间,也就是k的值减去刚刚的那个数字的概率空间, * 在本例当中就是减去100,也就是说第二个数是在1,900这个范围内筛选的. * 这样 筛选到最终,总

关于年会抽奖那些事

http://blog.chinaunix.net/uid-11121450-id-3480134.html快春节了,各个公司都陆续举办年会,ipad作为年会抽奖的大奖都卖脱销了,在年会抽奖出现尴尬的是:抽奖抽多了,没有奖品可发. 我昨天总结了在开发过程中遇到的抽奖问题 1.抽奖类型 1.1 即开型 提交后立即知道是否中奖:大转盘,老hu机 1.2 公证型 由公证处公证,现场抽奖 1.3投票型 根据投票数最高排名,选出中奖者 1.4 评选型 由客户根据作品质量选取 这四种类型中出现错误时,最难处

java实现转盘抽奖;

index.jsp页面: <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme() + "://" + request.getServerName() + ":

中奖概率算法(php 可用于刮刮卡,大转盘等抽奖算法)

php中奖概率算法,可用于刮刮卡,大转盘等抽奖算法.用法很简单,代码里有详细注释说明,一看就懂 <?php /* * 经典的概率算法, * $proArr是一个预先设置的数组, * 假设数组为:array(100,200,300,400), * 开始是从1,1000 这个概率范围内筛选第一个数是否在他的出现概率范围之内, * 如果不在,则将概率空间,也就是k的值减去刚刚的那个数字的概率空间, * 在本例当中就是减去100,也就是说第二个数是在1,900这个范围内筛选的. * 这样 筛选到最终,总

php中奖概率算法,可用于刮刮卡,大转盘等抽奖算法

php中奖概率算法,可用于刮刮卡,大转盘等抽奖算法.用法很简单,代码里有详细注释说明,一看就懂 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 <!--?

适用于抽奖程序 随机广告的PHP概率算法实例

做网站类的有时会弄个活动什么的,来让用户参加,既吸引用户注册,又提高网站的用户活跃度.同时参加的用户会获得一定的奖品,有100%中奖的,也有按一定概率中奖的,大的比如中个ipad.iphone5,小的中个Q币什么的 那么我们在程序里必然会设计到算法,即按照一定的概率让用户获得奖品.先来看两个概率算法函数. 算法一 代码如下: /** * 全概率计算 * * @param array $p array('a'=>0.5,'b'=>0.2,'c'=>0.4) * @return string

php几个常用的概率算法(抽奖、广告首选)

做网站类的有时会弄个活动什么的,来让用户参加,既吸引用户注册,又提高网站的用户活跃度.同时参加的用户会获得一定的奖品,有100%中奖的,也有按一定概率中奖的,大的比如中个ipad.iphone5,小的中个Q币什么的.那么我们在程序里必然会设计到算法,即按照一定的概率让用户获得奖品.先来看两个概率算法函数. 算法一 /** * 全概率计算 * * @param array $p array('a'=>0.5,'b'=>0.2,'c'=>0.4) * @return string 返回上面数