zoukankan      html  css  js  c++  java
  • 简单的抽奖function

      由于项目需要,写了个简单的抽奖,根据rand随机数取得抽奖区间,然后再根据各个奖品的抽奖概率判断这个随机数是否在这个奖品区间内。

      

    /**
    * 抽奖函数
    * 思路:先确定随机数是否大于奖品概率和,大于则不中奖,小于之后,则根据随机函数的数字区间,然后在遍历每条奖品的概率看是否在此区间内,确实抽中哪个奖品
    * @param $sum[0]['chance'] 抽奖得奖总概率
    * @param $luck_num 你的抽奖码
    * @param $luck 得奖区间
    * @param $size 小数点后位数
    * $param $max
    * $max=10,概率*10,$max=100,则*100
    */
    public function luck(){
    // 获取各个产品的中奖概率
    $data=$this->db->select('*')->get('prize')->result_array();
    // 判断奖品概率的小数点
    $size=0;
    foreach ($data as $key => $value) {
    $x=explode(".",$value['chance']);
    if(isset($x[1])){
    if($size<strlen($x[1])){
    $size=strlen($x[1]);
    }
    }
    }
    $max=10;
    for($i=0;$i<$size;$i++){
    $max=$max*10;
    }
    // 奖品总中奖概率
    $sum=$this->db->select_sum('chance')->get('prize')->result_array();
    // 根据随机函数确定是否中奖
    $luck_num=rand(1,($max*100));
    if($luck_num>($sum[0]['chance']*$max)){
    return array('status'=>0);
    }else{
    // 设置初设为0
    $luck=0;
    foreach ($data as $key => $value) {
    // 使每个奖品的概率相加
    $luck=$luck+($value['chance']*$max);
    if($luck_num<=$luck){
    return array('status'=>1,'id'=>$value['id'],'file'=>$value['file']);
    break;
    }
    }
    }
    }

  • 相关阅读:
    2020软件工程作业——团队03
    2020软件工程作业 ——团队02
    2020软件工程作业05
    2020软件工程作业04
    2020软件工程作业03
    2020软件工程作业02
    2020软件工程作业01
    微服务:基本介绍
    excel模板解析前后设计变化,以及我对此的看法和感受
    纸上得来终觉浅,绝知此事要躬行——Spring boot任务调度
  • 原文地址:https://www.cnblogs.com/zekeny/p/6677236.html
Copyright © 2011-2022 走看看