zoukankan      html  css  js  c++  java
  • php 实现简单抽奖

    首先有一组数据,里面有中奖的物品和概率

    $base_data = [
      ['name'=>'特等奖','num'=>1],
      ['name'=>'一等奖','num'=>5],
      ['name'=>'二等奖','num'=>20],
      ['name'=>'三等奖','num'=>50],
      ['name'=>'真遗憾','num'=>100]
    ];

    两种实现方法

    //根据num的个数生成一个数组,并合并
    //打乱数组,然后随机返回一个元素
    
    //计算概率1
    function data($arr){
      $return = [];
      foreach($arr as $key => $val){
        for($i = 0; $i < $val['num']; $i++){
          $return[] = $val['name'];
        }
      }
      shuffle($return);
      return $return[array_rand($return)];
    }
    $data = data($base_data);
    var_dump($data);
    //计算概率2
    function get_rand($arr){
      $sum = 0;
      $result = '';
      foreach($arr as $v){
        $sum += $v['num'];
      }
      foreach($arr as $val){
        $rand = mt_rand(1, $sum);
        if($rand <= $val['num']){
          $result = $val['name'];
          break;
        }else{
          $sum -= $val['num'];
        }
      }
      return $result;
    }



  • 相关阅读:
    程序怎么才能把自己的删除掉?
    Winsock编程入门1.初始化Winsock
    关于83版射雕英雄传
    一个感人的爱情故事(中英对照)
    NT系统的命令
    Delphi小巧的Windows NT服务程序源码
    更改Windows 登录屏幕保护程序
    画鬼最易
    濮水垂钓
    现代工作观
  • 原文地址:https://www.cnblogs.com/ilys/p/7802887.html
Copyright © 2011-2022 走看看