欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

PHP實現的隨機紅包算法示例

 更新時間:2017年08月14日 11:59:20   作者:myD  
這篇文章主要介紹了PHP實現的隨機紅包算法,結合實例形式分析了php隨機紅包算法的原理、實現方法與相關注意事項,需要的朋友可以參考下

本文實例講述了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;
}

多次統(tǒng)計

第二種, 對其簡單擴展一下, 每個紅包的最大金額是: (剩余金額/剩余紅包數)*3; 但是要求每次最少發(fā)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);

第四種:

因為每人最少1個豆, 那么每次隨機生成豆數的時候要預留 剩余人數*1個豆;

去掉這些必須剩余的豆數后, 以剩下的豆數的平均值為最大值進行隨機生成本次豆數

PS:這里再為大家提供兩款功能類似的在線工具供大家參考:

在線隨機數字/字符串生成工具:
http://tools.jb51.net/aideddesign/suijishu

在線隨機字符/隨機密碼生成工具:
http://tools.jb51.net/aideddesign/rnd_password

更多關于PHP相關內容感興趣的讀者可查看本站專題:《PHP數學運算技巧總結》、《php字符串(string)用法總結》、《PHP數據結構與算法教程》、《php程序設計算法總結》、《PHP數組(Array)操作技巧大全》及《php常見數據庫操作技巧匯總

希望本文所述對大家PHP程序設計有所幫助。

相關文章

  • 針對PHP開發(fā)安全問題的相關總結

    針對PHP開發(fā)安全問題的相關總結

    今天小編就為大家分享一篇關于針對PHP開發(fā)安全問題的相關總結,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-03-03
  • php中使用base HTTP驗證的方法

    php中使用base HTTP驗證的方法

    這篇文章主要介紹了php中使用base HTTP驗證的方法,涉及預定義服務器變量$_SERVER及header方法的相關使用技巧,需要的朋友可以參考下
    2015-04-04
  • php常用hash加密函數

    php常用hash加密函數

    這篇文章主要介紹了php常用hash加密函數,以實例形式詳細分析了PHP的hash加密函數用法,代碼中備有詳盡的注釋,便于理解,需要的朋友可以參考下
    2014-11-11
  • php去除二維數組的重復項方法

    php去除二維數組的重復項方法

    這篇文章主要介紹了php去除二維數組的重復項方法,感興趣的小伙伴們可以參考一下
    2015-11-11
  • 淺談PHP無限極分類原理

    淺談PHP無限極分類原理

    這篇文章主要介紹了PHP無限極分類原理,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-03-03
  • PHP詳解ASCII碼對照表與字符轉換

    PHP詳解ASCII碼對照表與字符轉換

    PHP基礎篇詳解ASCII碼對照表與字符轉換,討論ASCII碼對照表圖與字符轉換為十進制、八進制、十六進制和HTML的方法
    2011-12-12
  • PHP curl_setopt()函數實例代碼與參數分析

    PHP curl_setopt()函數實例代碼與參數分析

    curl_setopt()函數將為一個CURL會話設置選項。option參數是你想要的設置,value是這個選項給定的值。
    2011-06-06
  • PHP實現表單提交數據的驗證處理功能【防SQL注入和XSS攻擊等】

    PHP實現表單提交數據的驗證處理功能【防SQL注入和XSS攻擊等】

    這篇文章主要介紹了PHP實現表單提交數據的驗證處理功能,可實現防SQL注入和XSS攻擊等,涉及php字符處理、編碼轉換相關操作技巧,需要的朋友可以參考下
    2017-07-07
  • PHP截取指定圖片大小的方法

    PHP截取指定圖片大小的方法

    這篇文章主要介紹了PHP截取指定圖片大小的方法,可實現對指定圖片的縮放與截取功能,是非常實用的技巧,需要的朋友可以參考下
    2014-12-12
  • php中替換字符串函數strtr()和str_repalce()的用法與區(qū)別

    php中替換字符串函數strtr()和str_repalce()的用法與區(qū)別

    在php中替換函數主要有strtr(),str_repalce()這兩個函數,下面這篇文中主要給大家介紹下這兩者之間的區(qū)別和用法,文中通過示例代碼介紹的很詳細,有需要的朋友們可以參考借鑒,下面跟著小編一起來學習學習吧。
    2016-11-11

最新評論