展开目录
随机取某个概率区间的代码
php
X
陈尼玛的博客
记录开发生涯的踩坑经历,用时间来验证成长
加载中

上班需要做一个抽奖券的功能,需要人为设置中奖概率,因此我写了一个按照预设概率随机获取奖品下标的代码。功能是:给定几个正整数或者0,标记为各个商品被抽中的概率,然后随机选取抽到的商品。

<?php
  function rnd($r){
    $s=0;
    for($i=count($r);$i-->0; ){
      $s+=$r[$i];
      if($r[$i]<0 || $r[$i]!==(int)$r[$i])throw new Exception('概率数字必须是正整数或0');
    }
    if(!$s)throw new Exception('至少一个商品概率大于0');
    $a=rand()%$s;
    $i=0;
    for(;$i<count($r)-1;$i++){
      $a-=$r[$i];
      if($a<=0 && $r[$i])break;
    }
    return $i;
  }

var_dump(rnd(array(1,0,0,0)));
var_dump(rnd(array(0,100,0,0)));
var_dump(rnd(array(0,0,2,0,3)));
?>

相关文档

  1. php session文件过多的问题

  2. php5.2.17 curl openssl的配置踩坑

  3. x64系统编译php5.3报错

  4. 无脑破解phpjm加密

  5. php解析ini文件

  6. 无聊的刷屏

  7. php switch的问题

  8. PHP使用SMTP发送邮件

随便看看

  1. sqlite 查看table的构建语句

  2. 记一次nodejs内存泄漏的排查经历

  3. css3 文字渐变色

  4. curl用法

  5. html5 全屏代码

  6. 搜索命令整理

  7. nodejs俄罗斯方块

  8. heroku查看app使用时间

  9. putty使用http代理连接服务器

  10. ssl 证书生成方式

  11. centos查看最近一次的开机时间

  12. mysql导出csv文件

  13. 树莓派配置收发邮件

  14. mysql选取内容导出到文件

  15. bootstrap modal弹框导致ie无法获取焦点

  16. 感谢beego陪伴我度过那不靠谱的半年

畅言模块加载中