php计算抽奖的概率

<?php 

    //计算抽奖的概率
    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;
    }
    $prize_arr = array(
        '0' => array('id'=>1,'prize'=>'1000000514','v'=>2),
        '1' => array('id'=>2,'prize'=>'1000000513','v'=>5),
        '2' => array('id'=>3,'prize'=>'1000000512','v'=>13),
        '3' => array('id'=>4,'prize'=>'1000000511','v'=>15),
        '4' => array('id'=>5,'prize'=>'1000000510','v'=>25),
        '5' => array('id'=>6,'prize'=>'1000000509','v'=>30),
		'6' => array('id'=>7,'prize'=>'1000000508','v'=>10),
    );
    foreach ($prize_arr as $key => $val) {
        $arr[$val['id']] = $val['v'];
    }
    $rid = get_rand($arr);
    $res['yes'] = $prize_arr[$rid-1]['prize'];
    unset($prize_arr[$rid-1]);
    shuffle($prize_arr);
	$prize_arrcount = count($prize_arr);
    for($i=0;$i<$prize_arrcount;$i++){
        $pr[] = $prize_arr[$i]['prize'];
    }
    $res['no'] = $pr;
	//抽奖结果
    $ro = $res['yes'];
	print_r($ro);

?>

php计算抽奖的概率

时间: 2024-10-10 16:27:18

php计算抽奖的概率的相关文章

javascript抽奖插件+概率计算

写了一个抽奖的jquery插件和计算概率的方法, 结合起来就是一个简单的概率抽奖, 不过实际项目中基本不会把抽奖概率的计算放在前端处理~. 概率计算 function Probability(conf) { this.probArr = conf || []; this.range = [], this.len = this.probArr.length; if (this.len > 0) { this.init(); } } Probability.prototype = { init: f

js转盘大抽奖 自定义概率

公司项目搞优惠活动,让做一个转盘抽奖的活动,转盘抽奖让他转起来 按照概率停止其实都麻烦,但是概率如果设置在前端就会很大的安全漏洞,所以无论为了安全性还是后期的维护问题都要把概率写到后台配置里然后读取配置.那么问题来了,我们需要把后台的概率结果和前端自己的转盘想对应,我的大致思路是这样的,后台返回概率结果之后,对应的可定有奖品,然后给每个奖品一个不变的标识,根据这个返回的标识我们前端进行相应的转盘指针停留的位置.我们后台鼻尖懒 他不想改接口了 就直接让我去对应配置里的奖品名字,好吧就这样算是搞完了

模拟棋盘法计算遗传中概率

#include<cstdio> #include<cstring> using namespace std; int m[5][5],w[3][3],s[10],b[3][3],c[5],ans[10][10]; char fa[100],ma[100],qu[100]; int gcd(int a,int b) { return b?gcd(b,a%b):a; } int main() { int tar; printf("请输入亲本基因类型:\n"); p

不同概率的抽奖

今天为大家写个小程序. 工作中有遇到一些抽奖的活动,但是你懂得,抽奖物品的概率肯定不是一样,你会发现好的东西很难抽到,经常抽到一些垃圾的东西,嘿嘿,这就是本文要说的,我们要控制抽奖物品的概率.还有顺便说一句,网上这种小程序几乎没有,很多都是等概率的抽奖balabala- 需求很简单,为了更加形象,这里我们列一个表格来显示我们抽奖的物品和对应的概率(没有边框,大家凑合着看看吧,不想改造Octopress的样式了) 序号 物品名称 物品ID 抽奖概率 1 物品1 P1 0.2 2 物品2 P2 0.

多件商品根据概率抽奖

最近在项目中分配了一个抽奖模块的任务,这里先说一下需求把:每个抽奖活动后台会配置多个中奖奖品,分为特殊奖品和普通奖品,所有奖品的中奖概率之和加起来为1.用户端用户抽奖需要根据概率来随机抽中一个商品.开始我脑子生出来的第一想法是生成一个随机数,然后让这个随机数跟概率去比较,取小于这个随机数的最大一个概率对应的商品为中奖商品,后来一想,发现自己想的太简单直观了,这样抽中的商品中奖概率不满足配置的中奖概率.在网上搜了一下相关的问题,然后就弄清楚了.说来惭愧,这么一个简单的算法题,自己竟然第一时间没有没

程序员眼中的统计学(3)】概率计算:把握机会

概率计算:把握机会 作者 白宁超 2015年10月13日23:23:13 摘要:程序员眼中的统计学系列是作者和团队共同学习笔记的整理.首先提到统计学,很多人认为是经济学或者数学的专利,与计算机并没有交集.诚然在传统学科中,其在以上学科发挥作用很大.然而随着科学技术的发展和机器智能的普及,统计学在机器智能中的作用越来越重要.本系列统计学的学习基于<深入浅出统计学>一书(偏向代码实现,需要读者有一定基础,可以参见后面PPT学习).正如(吴军)先生在<数学之美>一书中阐述的,基于统计和数

Es6语法实现的转盘抽奖效果——可配置转盘的抽奖概率

最近公司要做一个转盘抽奖的效果,但是我们可以控制转盘抽奖的概率,自己用es6简单的实现了下,中间虽然遇到一些问题,但最终都是解决了,下面说一下我的思路. <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <link rel="stylesheet" href="css/index.css">

Android SurfaceView实战 打造抽奖转盘

转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/41722441 ,本文出自:[张鸿洋的博客] 1.概述 今天给大家带来SurfaceView的一个实战案例,话说自定义View也是各种写,一直没有写过SurfaceView,这个玩意是什么东西?什么时候用比较好呢? 可以看到SurfaceView也是继承了View,但是我们并不需要去实现它的draw方法来绘制自己,为什么呢? 因为它和View有一个很大的区别,View在UI线程去

实现一个简单的概率发奖问题

WOW,好长时间没有更新博客了,最近加班,加到屎...果然年轻就要996...哈哈 最近,TA们又有了个新的点子,也不对,可能只是在某处看到的点子,不过..who care!,反正最后我来搬砖,除了CRUD之外好像没啥新颖的地方, 不过有个地方我还是学习了下,参考了一位博主写的: 给定N个概率集合,从总随机抽取,发放奖品,限定前M名必得奖品,在奖品不够的情况下,重新抽奖,再将其发放.直到奖品数量为余量值后,结束抽奖 其中,在github上找到一个非常厉害的抽奖,实现,不过,鉴于项目简单性,就没拿