您好,登錄后才能下訂單哦!
這篇文章主要介紹“php代碼如何實現紅包功能”,在日常操作中,相信很多人在php代碼如何實現紅包功能問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”php代碼如何實現紅包功能”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
php代碼實現紅包功能的方法:1、通過distribute_red_bages方法實現拼手氣紅包;2、通過average_red_bages方法實現均分紅包;3、通過rob_red_bages方法實現規定紅包數。
本文操作環境:Windows7系統、PHP7.1版、DELL G3電腦
php代碼怎么實現紅包功能?
PHP 紅包功能代碼
前段時間被問這個問題,最近有空就寫寫啦,還是挺有趣的
首先做下搶紅包方法分類:
對于發紅包的人來說,一共有大致3類(其他的我暫時沒想到,有想到可以聯系我呀~)
一、拼手氣紅包個數不定(完全看運氣)
二、拼手氣紅包規定個數(個數一定,至少一分)
三、平均分紅包(個數一定,大家平分)還是這個好寫是吧!嘿嘿
上代碼:
<?php var_dump(rob_red_bages(5 , 10)); var_dump(distribute_red_bages(5)); /* 方法主要功能:拼手氣紅包(個數不定) 一個參數 參數一: 紅包總金額(按分計算) */ function distribute_red_bages($sum){ $sum = $sum*100; $i=0; while($sum>0){ $temp = rand(1 , $sum);//紅包值 $sum -= $temp; $arr[$i++] = $temp/100; } //check($arr); return $arr; } /* 方法主要功能:均分紅包 兩個參數: 參數一: 紅包總金額 參數二: 均分個數 */ function average_red_bages($sum , $num){ $res = $sum/$num; for($i=0 ; $i<$num ; $i++){ $arr[$i] = $res; } //check($arr); return $arr; } /* 方法主要功能:規定個數的手氣紅包 兩個參數: 參數一:紅包總金額 參數二:紅包個數 計算流程,隨機生成num個數 求和得到m 用sum/m 得到每個數需要k 用隨機數*k */ function rob_red_bages($sum , $num){ $sum = $sum*100; for($i=0 ; $i<$num ; $i++){ $temp = rand(1 , $sum); $arr[$i] = $temp; $sumall += $temp; } $k = $sum/$sumall; for($i=0 ; $i<sizeof($arr); $i++){ $arr2[$i] = $arr[$i]*$k/100; } return $arr2; } /*紅包總額檢測*/ function check($arr){ foreach($arr as $a){ $sum += $a; echo $a."+"; } echo " 0 =".$sum."\n"; } ?>
下面分析下拼手氣紅包吧(平分的就不說了,大家都會):
拼手氣紅包個數不定思路:(總金額:sum)
---->隨機第一個小于sum的數: n
---->總金額減去該數: temp = sum-n
---->隨機一個小于temp的數
---->遞歸上述方法直到總金額為0
---->返回存儲隨機結果的數組
這個方法比較常規,用來實現規定個數的紅包也是可以實現的!不過~
拼手氣紅包規定個數思路(總金額 sum,紅包個數 num )
---->隨機num個小于sum的數,生成數組
---->對這些數求和得到allsum
---->用sum除以allsum得到所有生成數的公倍數
---->數組每個元素與公倍數相乘得到每個紅包的的數值
這個方法有缺點(最終的結果可能會略大于sum,或者略小于sum 因為除法可能出現無理數)
到此,關于“php代碼如何實現紅包功能”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。