zoukankan      html  css  js  c++  java
  • 红包算法

    <?php
    $r = redEnvelope(100, 10, 12, 6);
    echo array_sum($r); //校验结果
    print_r($r); //查看分布
     
    function redEnvelope($sum, $num, $max, $min){
      $result = array_fill(0, $num, $min);
      $loop = $sum - $num * $min;
      $i = 0;
      while($loop) {
        $randNum = mt_rand(1, min($loop, $max - $min));
        if($randNum && $result[$i] + $randNum <= $max) {
          $result[$i] += $randNum;
          $loop -= $randNum;
        }
        $i = ($i + 1) % $num;
      } //分配结束
      //$max 至多出现一次
      $m = array_keys($result, max($result));
      if(count($m) > 1 && $result[$m[0]] == $max) {
        for($i=1; $i<count($m); $i++) {
          $n = array_keys($result, min($result));
          $result[$m[$i]]--;
          $result[$n[0]]++;
        }
      }
      //$min 至多出现一次
      $m = array_keys($result, min($result));
      if(count($m) > 1 && $result[$m[0]] == $min) {
        for($i=1; $i<count($m); $i++) {
          $n = array_keys($result, $min + 2);
          $result[$m[$i]]++;
          $result[$n[0]]--;
        }
      }
      return $result;
    }
  • 相关阅读:
    linux 中的vim的配置文件的位置
    centos find
    multi-cursor
    ctrlsf插件
    Vim的可视模式
    Vim的tagbar插件
    Vim的tag系统
    ~/.ctag的作用与配置
    在Vim里使用gtags-cscope
    查看Vim的option变量的值
  • 原文地址:https://www.cnblogs.com/csjoz/p/7244076.html
Copyright © 2011-2022 走看看