最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

php實現(xiàn)的微信紅包算法分析(非官方)

 更新時間:2015年09月25日 11:04:47   作者:deeka  
這篇文章主要介紹了php實現(xiàn)的微信紅包算法,以實例形式分析了拼手氣紅包的相關(guān)隨機算法技巧,具有一定參考借鑒價值,需要的朋友可以參考下

本文實例講述了php實現(xiàn)的微信紅包算法。分享給大家供大家參考。具體如下:

最近一直在微信群里體驗紅包功能,紅包類型有兩種:

1. 普通紅包

2. 拼手氣紅包

普通紅包就不用多解析了,大鍋飯原理,平分。

拼手氣紅包講的是手氣(運氣),有人可以搶到很多,有人搶的少得可憐,當(dāng)然也不是先搶就一定多,說到底了就是隨機。

想了想,自己寫寫看,能不能實現(xiàn)類似的功能(不敢說是算法)。

// $bonus_total 紅包總金額
// $bonus_count 紅包個數(shù)
// $bonus_type 紅包類型 1=拼手氣紅包 0=普通紅包
function randBonus($bonus_total=0, $bonus_count=3, $bonus_type=1){
  $bonus_items  = array(); // 將要瓜分的結(jié)果
  $bonus_balance = $bonus_total; // 每次分完之后的余額
  $bonus_avg   = number_format($bonus_total/$bonus_count, 2); // 平均每個紅包多少錢
  $i       = 0;
  while($i<$bonus_count){
    if($i<$bonus_count-1){
      $rand      = $bonus_type?(rand(1, $bonus_balance*100-1)/100):$bonus_avg; // 根據(jù)紅包類型計算當(dāng)前紅包的金額
      $bonus_items[] = $rand;
      $bonus_balance -= $rand;
    }else{
      $bonus_items[] = $bonus_balance; // 最后一個紅包直接承包最后所有的金額,保證發(fā)出的總金額正確
    }
    $i++;
  }
  return $bonus_items;
}

好吧,我們現(xiàn)在來體驗一下

// 發(fā)3個拼手氣紅包,總金額是100元
$bonus_items  = randBonus(100, 3, 1);
// 查看生成的紅包
var_dump($bonus_items);
// 校驗總金額是不是正確,看看微信有沒有坑我們的錢
var_dump(array_sum($bonus_items));

另一個使用數(shù)組實現(xiàn)的版本,原理差不多:

function sendRandBonus($total=0, $count=3, $type=1){
  if($type==1){
    $input     = range(0.01, $total, 0.01);
    if($count>1){
      $rand_keys = (array) array_rand($input, $count-1);
      $last    = 0;
      foreach($rand_keys as $i=>$key){
        $current  = $input[$key]-$last;
        $items[]  = $current;
        $last    = $input[$key];
      }
    }
    $items[]    = $total-array_sum($items);
  }else{
    $avg      = number_format($total/$count, 2);
    $i       = 0;
    while($i<$count){
      $items[]  = $i<$count-1?$avg:($total-array_sum($items));
      $i++;
    }
  }
  return $items;
}

希望本文所述對大家的php程序設(shè)計有所幫助。

相關(guān)文章

  • php時區(qū)轉(zhuǎn)換轉(zhuǎn)換函數(shù)

    php時區(qū)轉(zhuǎn)換轉(zhuǎn)換函數(shù)

    godaddy主機在國外。把站點建站國外,顯示時間時可能需要時區(qū)轉(zhuǎn)換,下面是個方便的工具函數(shù),用于時區(qū)轉(zhuǎn)換
    2014-01-01
  • php修改上傳圖片尺寸的方法

    php修改上傳圖片尺寸的方法

    這篇文章主要介紹了php修改上傳圖片尺寸的方法,涉及php操作圖片的技巧,非常具有實用價值,需要的朋友可以參考下
    2015-04-04
  • 通過PHP實現(xiàn)獲取訪問用戶IP

    通過PHP實現(xiàn)獲取訪問用戶IP

    這篇文章主要介紹了通過PHP實現(xiàn)獲取訪問用戶IP,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-05-05
  • PHP性能分析工具xhprof的安裝使用與注意事項

    PHP性能分析工具xhprof的安裝使用與注意事項

    xhprof 是一款Facebook工程師開發(fā)和維護的一款PHP性能分析、調(diào)試工具,相較于xdebug要更輕量,更節(jié)省資源,強烈推薦大家使用。下面這篇文章主要給大家介紹了關(guān)于PHP性能分析工具xhprof的安裝與使用方法的相關(guān)資料,需要的朋友可以參考下。
    2017-12-12
  • PHP 時間日期操作實戰(zhàn)

    PHP 時間日期操作實戰(zhàn)

    PHP 時間日期操作實戰(zhàn),學(xué)習(xí)php的朋友可以參考下。
    2011-08-08
  • 微信公眾平臺開發(fā)教程②微信端分享功能圖文詳解

    微信公眾平臺開發(fā)教程②微信端分享功能圖文詳解

    這篇文章主要介紹了微信公眾平臺開發(fā)微信端分享功能,結(jié)合圖文形式詳細分析了微信分享功能的原理、操作步驟及相關(guān)實現(xiàn)技巧,需要的朋友可以參考下
    2019-04-04
  • 實戰(zhàn)mysql導(dǎo)出中文亂碼及phpmyadmin導(dǎo)入中文亂碼的解決方法

    實戰(zhàn)mysql導(dǎo)出中文亂碼及phpmyadmin導(dǎo)入中文亂碼的解決方法

    因為要把本機的gbk編碼的mysql數(shù)據(jù)庫導(dǎo)入到虛擬主機去,服務(wù)商只提供了phpmyadmin供你導(dǎo)入導(dǎo)出。
    2010-06-06
  • PHP實現(xiàn)的裝箱算法示例

    PHP實現(xiàn)的裝箱算法示例

    這篇文章主要介紹了PHP實現(xiàn)的裝箱算法,結(jié)合實例形式分析了PHP裝箱算法的概念、原理、定義及使用方法,需要的朋友可以參考下
    2018-06-06
  • php array_filter除去數(shù)組中的空字符元素

    php array_filter除去數(shù)組中的空字符元素

    php array_filter除去數(shù)組中的空字符元素,array_filter() 函數(shù)根據(jù)回調(diào)函數(shù)過濾數(shù)組中的值,省略回調(diào)函數(shù)則默認過濾空值,需要的朋友可以參考下。
    2011-11-11
  • 一個簡單至極的PHP緩存類代碼

    一個簡單至極的PHP緩存類代碼

    這篇文章和大家分享了一個簡單至極的PHP緩存類代碼,緩存的應(yīng)用對于php項目的開發(fā)來說尤為重要,需要的朋友可以參考下
    2015-10-10

最新評論

庆云县| 建始县| 山东省| 河曲县| 洪湖市| 木里| 延庆县| 成安县| 连南| 宁城县| 四川省| 昌宁县| 安丘市| 曲水县| 衡阳市| 简阳市| 温州市| 山阴县| 万盛区| 调兵山市| 晋城| 安宁市| 徐州市| 武胜县| 长沙县| 华池县| 浦北县| 安徽省| 宿州市| 铜梁县| 碌曲县| 樟树市| 平潭县| 上饶市| 肥城市| 镇安县| 榆中县| 贵州省| 迁安市| 麻阳| 马关县|