zoukankan      html  css  js  c++  java
  • php 抽奖概率 随机数

    <?php
    
    $prize_arr = array( 
        '0' => array('id' => 1, 'title' => 'iphone5s', 'v' => 5), 
        '1' => array('id' => 2, 'title' => '联系笔记本', 'v' => 10), 
        '2' => array('id' => 3, 'title' => '音箱设备', 'v' => 20), 
        '3' => array('id' => 4, 'title' => '30GU盘', 'v' => 30), 
        '4' => array('id' => 5, 'title' => '话费50元', 'v' => 10), 
        '5' => array('id' => 6, 'title' => 'iphone6s', 'v' => 15), 
        '6' => array('id' => 7, 'title' => '谢谢,继续加油哦!~', 'v' => 10), 
    ); 
     
    foreach ($prize_arr as $key => $val) { 
        $arr[$val['id']] = $val['v']; 
    } 
     
    $prize_id = getRand($arr); //根据概率获取奖品id 
    $data['msg'] = ($prize_id == 7) ? 0 : 1; //如果为0则没中  
    $data['prize_title'] = $prize_arr[$prize_id - 1]['title']; //中奖奖品 
    echo json_encode($data); 
    exit; //以json数组返回给前端 
     
    function getRand($proArr) { //计算中奖概率 
        $rs = ''; //z中奖结果 
        $proSum = array_sum($proArr); //概率数组的总概率精度 
        //概率数组循环 
        foreach ($proArr as $key => $proCur) { 
            $randNum = mt_rand(1, $proSum); 
            if ($randNum <= $proCur) { 
                $rs = $key; 
                break; 
            } else { 
                $proSum -= $proCur; 
            } 
        } 
        unset($proArr); 
        return $rs; 
    }
    
    ?>
    =========================================

    <?php
    header("Content-Type: text/html; charset=utf-8");
    $prize_arr = array(
    '0' => array('id' => 1, 'url' => 'http://mp.weixin.qq.com/s/hyPRO4tJAl1cJaY97TGFvw', 'v' => 5),
    '1' => array('id' => 2, 'url' => 'http://mp.weixin.qq.com/s/gD2MhdYAMx1PyA4jCdJtQQ', 'v' => 10),
    '2' => array('id' => 3, 'url' => 'http://mp.weixin.qq.com/s/Ud_F_l6ZufGElkZwONzGbA', 'v' => 20),
    '3' => array('id' => 4, 'url' => 'http://mp.weixin.qq.com/s/LA1lASoxuRdaZ13F8pQbNA', 'v' => 30),
    '4' => array('id' => 5, 'url' => 'http://mp.weixin.qq.com/s/efZKG9GjrchhBR4zT5zU3A', 'v' => 10),
    '5' => array('id' => 6, 'url' => 'http://mp.weixin.qq.com/s/ghisPsLG4OIFdehn6kZrUw', 'v' => 15),
    '6' => array('id' => 7, 'url' => 'http://mp.weixin.qq.com/s/bltFJBXstWN43r0GiePzBw', 'v' => 10),
    );
    // echo "呵呵";
    foreach ($prize_arr as $key => $val) {
    $arr[$val['id']] = $val['v'];
    }
    // var_dump($arr);

    $myid = myword($arr);
    $data['url'] = $prize_arr[$myid-1]['url'];
    $url = $data['url'];
    echo "<script type='text/javascript'>window.location.href='$url';</script>";

    function myword($str){
    $rs = '';//中奖结果

    $proSum = array_sum($str);//计算数组中所有值的和
    //概率数组循环
    foreach ($str as $k => $v) {
    $word1 = mt_rand(1,$proSum); //生成更好的随机数
    if( $word1 <= $v){
    $rs = $k;
    break;
    }else{
    $proSum -= $v;
    }
    }

    return $rs;
    }


    ?>

  • 相关阅读:
    Mysql --学习:大量数据快速导入导出
    Mybatis 学习---${ }与#{ }获取输入参数的区别、Foreach的用法
    SSM 框架 ---项目整合
    SMM框架--maven创建web项目
    SSM框架—环境搭建(MyEclipse+Tomcat+MAVEN+SVN)
    Java中 try--catch-- finally、throw、throws 的用法
    Java集合:List、Set和Map的区别,ArrayList和LinkedList有何区别..........
    java中 this() 和super()的作用及用法
    Thread和Runnable的区别和联系、多次start一个线程会怎么样
    vue-devtools google扩展插件安装
  • 原文地址:https://www.cnblogs.com/vip-deng-vip/p/8032053.html
Copyright © 2011-2022 走看看