溫馨提示×

溫馨提示×

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

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

紅包算法的一種實現(PHP)

發布時間:2020-10-21 12:37:55 來源:網絡 閱讀:414 作者:li_feng_liu 欄目:web開發

        前段時間有個項目需要用到紅包算法,本以為簡單,細想之下有點復雜。于是就百度了一下,沒想到查出了不少,有些寫的很復雜。由于時間有點緊,我就找了一個簡單點的。然后參考著寫一個。參考的地址是:https://blog.csdn.net/gorgle/article/details/52954413;

       這個地址中的紅包是用java寫的。根據其原理,我用PHP寫了一遍,并且改進了點。他的算法中沒有加每個紅包最大最小值限制。我用PHP寫的時候加上去了。代碼如下:

<?php

/*
$total_money:紅包總金額
$total_people:總人數/總分數
$min_money:每份紅包的最小金額
$max_money:每份紅包的最大金額
*/
function redpack($total_money,$total_people,$min_money,$max_money){

   $ret=array();
   $new_ret=array();
   
   $total_real_money=$total_money-$total_people*$min_money;

   $ret[0]=0;
   for($i=1;$i<$total_people;$i++){
       
     $ret[$i]=get_rand($ret[$i-1],$total_real_money,($max_money-$min_money));
     
      
   }

 sort($ret);

for($j=0;$j<count($ret);$j++){

if($j==count($ret)-1){
$new_ret[count($ret)-1]=$total_real_money-$ret[count($ret)-1]+$min_money;
}else{

    
$new_ret[]=$ret[$j+1]-$ret[$j]+$min_money;
}
}


shuffle($new_ret);
  return $new_ret;

}


function get_rand($start,$end,$max){
    $tmp=rand($start,$end);
    $total_max=$start+$max;
    
    if($tmp>($total_max) || empty($tmp)){
        return get_rand($start,$end,$max);
    }else{
        return $tmp;
    }
    
}


向AI問一下細節

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

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女