一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類(lèi)導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語(yǔ)言|JavaScript|易語(yǔ)言|vb.net|

服務(wù)器之家 - 編程語(yǔ)言 - PHP教程 - php實(shí)現(xiàn)的微信紅包算法分析(非官方)

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

2020-11-20 13:21deeka PHP教程

這篇文章主要介紹了php實(shí)現(xiàn)的微信紅包算法,以實(shí)例形式分析了拼手氣紅包的相關(guān)隨機(jī)算法技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下

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

最近一直在微信群里體驗(yàn)紅包功能,紅包類(lèi)型有兩種:

1. 普通紅包

2. 拼手氣紅包

普通紅包就不用多解析了,大鍋飯?jiān)恚椒帧?/p>

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

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

想了想,自己寫(xiě)寫(xiě)看,能不能實(shí)現(xiàn)類(lèi)似的功能(不敢說(shuō)是算法)。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// $bonus_total 紅包總金額
// $bonus_count 紅包個(gè)數(shù)
// $bonus_type 紅包類(lèi)型 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); // 平均每個(gè)紅包多少錢(qián)
  $i       = 0;
  while($i<$bonus_count){
    if($i<$bonus_count-1){
      $rand      = $bonus_type?(rand(1, $bonus_balance*100-1)/100):$bonus_avg; // 根據(jù)紅包類(lèi)型計(jì)算當(dāng)前紅包的金額
      $bonus_items[] = $rand;
      $bonus_balance -= $rand;
    }else{
      $bonus_items[] = $bonus_balance; // 最后一個(gè)紅包直接承包最后所有的金額,保證發(fā)出的總金額正確
    }
    $i++;
  }
  return $bonus_items;
}

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

?
1
2
3
4
5
6
// 發(fā)3個(gè)拼手氣紅包,總金額是100元
$bonus_items  = randBonus(100, 3, 1);
// 查看生成的紅包
var_dump($bonus_items);
// 校驗(yàn)總金額是不是正確,看看微信有沒(méi)有坑我們的錢(qián)
var_dump(array_sum($bonus_items));

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
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;
}

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 天堂网在线网站成人午夜网站 | 精品视频日本 | 日本不卡1卡2卡三卡网站二百 | 久久精品WWW人人爽人人 | 免费理伦片手机在线播放 | 91精品综合 | 亚洲精品短视频 | oneday日本在线观看完整版 | 菠萝视频污 | 亚洲高清在线天堂精品 | 91国产在线视频 | 久久囯产精品777蜜桃传媒 | 国产99在线观看 | 肉色欧美久久久久久久蜜桃 | 爱福利视频一区 | 蜜桃视频在线观看www | 日本欧美强乱视频在线 | 亚洲男人的天堂在线 | 韩国一大片a毛片女同 | 亚洲国产区中文在线观看 | 亚洲欧洲日产国码无码av | 欧美一级高清免费a | 91精品国产综合久久消防器材 | 国产成人精品实拍在线 | 91久久精品国产亚洲 | 99视频都是精品热在线播放 | 久久精品视在线观看2 | 久久久这里有精品999 | 午夜人妻理论片天堂影院 | 久久黄色录像 | 免费欧美日韩 | 欧美女人p| 丝袜美女被艹 | a级精品九九九大片免费看 a级动漫 | 亚洲精品久久久992KVTV | 久久国产热视频99rev6 | а天堂中文最新版在线 | 婷婷日韩| 日本美女视频韩国视频网站免费 | 成人免费播放 | 无限时间看片在线观看 |