微信紅包隨機產生演算法php版_php執行個體

來源:互聯網
上載者:User
想了想,自己寫寫php版的紅包隨機產生演算法,能不能實作類別似的功能(其實也不敢說是演算法)。
// $bonus_total 紅包總金額
// $bonus_count 紅包個數
// $bonus_type 紅包類型 1=拼手氣紅包 0=普通紅包

function randBonus($bonus_total=0, $bonus_count=3, $bonus_type=1){  $bonus_items  = array(); // 將要瓜分的結果  $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; // 根據紅包類型計算當前紅包的金額      $bonus_items[] = $rand;      $bonus_balance -= $rand;    }else{      $bonus_items[] = $bonus_balance; // 最後一個紅包直接承包最後所有的金額,保證發出的總金額正確    }    $i++;  }  return $bonus_items;}

好吧,我們現在來體驗一下

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

另一個使用數組實現的版本,原理差不多:

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;}

以上就是本文的全部內容,希望對大家的學習有所協助,也希望大家多多支援指令碼之家。

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.