91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

利用PHP怎么實現一個隨機紅包算法

發布時間:2021-02-13 16:07:12 來源:億速云 閱讀:170 作者:Leah 欄目:開發技術

利用PHP怎么實現一個隨機紅包算法?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

一、整體設計

算法有很多種, 可以自行選擇, 主要的"架構" 是這樣的, 用redis decr()命令去限流, 用mysql去記錄各種需要的數據

二、紅包算法

簡便起見, 紅包金額用整數表示, 假設每個紅包里邊有x個糖豆, 每個人最少一個豆

第一種: 每個紅包的最大金額是: (剩余金額/剩余紅包數)*2, 需要開始的時候預先分配給每個人一個豆

function randBean($total_bean, $total_packet)
{
  $min_bean = 1;
  $max_bean = 5000;
  $range = 2;
  $total_bean = $total_bean - $total_packet * $min_bean; //每個人預留一個最小值
  $list = [];
  $min = 1;
  while(count($list) < $total_packet){
    $max = floor($total_bean / $total_packet) * $range;
    $bean = rand($min, $max);
    if ($bean <= $max_bean - 1) {
      $list[] = $bean;
      $total_bean -= $bean;
    }
  }
  $list[] = $total_bean;//剩余的金豆作為最后一個紅包
  //合并
  foreach ($list as $k => $v) {
    $list[$k] += $min_bean;
  }
  return $list;
}

多次統計

利用PHP怎么實現一個隨機紅包算法

第二種, 對其簡單擴展一下, 每個紅包的最大金額是: (剩余金額/剩余紅包數)*3; 但是要求每次最少發2個紅包

第三種, 線段法, 隨機生成幾個數字, 將一個直線分成幾段, 每段的長度(這個波動比較大, 不是很平均, 如果限制了每個紅包的大小, 會比較麻煩)

function abc ($total_bean, $total_packet)
{
  $min = 1;
  $max = $total_bean -1;
  $list = [];
  $maxLength = $total_packet - 1;
  while(count($list) < $maxLength) {
    $rand = mt_rand($min, $max);
    empty($list[$rand]) && ($list[$rand] = $rand);
  }
  $list[0] = 0; //第一個
  $list[$total_bean] = $total_bean; //最后一個
  sort($list); //不再保留索引
  $beans = [];
  for ($j=1; $j<=$total_packet; $j++) {
    $beans[] = $list[$j] - $list[$j-1];
  }
  // return $beans;
  echo '<pre>'; print_r($beans); echo array_sum($beans);
}
abc(100000, 3);

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

php
AI

略阳县| 钦州市| 砀山县| 杭锦旗| 长汀县| 连江县| 彰武县| 金秀| 阳山县| 根河市| 光山县| 高碑店市| 肇庆市| 镇坪县| 红桥区| 娄烦县| 南靖县| 临清市| 凤山县| 洛隆县| 富顺县| 丹寨县| 清远市| 萍乡市| 五莲县| 佛学| 绥芬河市| 霍山县| 湾仔区| 剑河县| 南靖县| 叶城县| 焦作市| 哈尔滨市| 红原县| 临沭县| 舒兰市| 延川县| 政和县| 雅安市| 桓仁|