首頁 > 後端開發 > php教程 > PHP實作紅包金額拆分演算法案例詳解

PHP實作紅包金額拆分演算法案例詳解

php中世界最好的语言
發布: 2023-03-26 08:46:02
原創
2074 人瀏覽過

這次帶給大家PHP實作紅包金額分割演算法案例詳解,PHP實作紅包金額分割演算法的注意事項有哪些,以下就是實戰案例,一起來看一下。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

<?php

// 新年红包金额拆分试玩

class CBonus

{

  public $bonus;//红包

  public $bonus_num;//红包个数

  public $bonus_money;//红包总金额

  public $money_single_max;//单个红包限额

   

  public function construct(){

    $this->bonus_num = 10;

    $this->bonus_money = 200;

    $this->money_single_max = 60;

  }

  private function randomFloat($min = 0, $max = 1) {

    $mt_rand = mt_rand();

    $mt_getrandmax = mt_getrandmax();

    echo &#39;mt_rand=&#39; . $mt_rand . &#39;, mt_getrandmax=&#39; . $mt_getrandmax . &#39;<hr/>&#39;;

    return $min + $mt_rand / $mt_getrandmax * ($max - $min);

  }

  //计算

  public function compute()

  {

    $this->bonus = array();

    $bonus_money_temp = $this->bonus_money;

    $money_single_max = $this->money_single_max;

    $i = 1;

    while($i < $this->bonus_num)

    {

      if ($money_single_max > $bonus_money_temp)

      {

        $money_single_max = floatval(sprintf("%01.2f", $bonus_money_temp / 2));//剩余金额不够分时,把剩余金额的一半作为备用金

      }

      $bonus_money_rad = $this->randomFloat(0.01, $money_single_max);//一个红包随机金额 最小的1分钱

      $bonus_money_rad = floatval(sprintf("%01.2f", $bonus_money_rad));

      $bonus_money_temp = $bonus_money_temp - $bonus_money_rad ;//待分配的总剩余金额

      $bonus_money_temp = floatval(sprintf("%01.2f", $bonus_money_temp));

      $this->bonus[] = $bonus_money_rad;

      //echo $bonus_money_rad . &#39;,&#39; . $bonus_money_temp . &#39;<hr/>&#39;;

      $i++;

    }

    $this->bonus[] = $bonus_money_temp;//分配剩余金额给最后一个红包

  }

  //打印

  public function output(){

    $total = 0;

    foreach($this->bonus as $k => $v)

    {

      echo &#39;红包&#39; . ($k+1) . &#39;=&#39; . $v . &#39;<br/>&#39;;

      $total += $v;

    }

    echo &#39;红包总金额:&#39;.$total;

  }

}

$CBonus = new CBonus();

$CBonus->compute();

$CBonus->output();

?>

登入後複製

示範結果:

紅包1=12.36
紅包2=24.37
紅包3=42.71
紅包4=36.92
紅包5= 25.84
紅包6=23.17
紅包7=15.92
紅包8=1.35
紅包9=7.75
紅包10=9.61
紅包總金額:200
 


紅包1=24.59
紅包2=17.66
紅包3=29.67
紅包4=32.34
紅包5=12.67
紅包6=37.15
紅包7=17.41
紅包8=15.23
紅包9=6.13

紅包10=7.15
紅包總金額:200

相信看了本文案例你已經掌握了方法,更多精彩請關注php中文網其它相關文章!

推薦閱讀:
PHP依賴倒置案例詳解


#PHP取得檔案mimes類型步驟詳解

## ####

以上是PHP實作紅包金額拆分演算法案例詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
怎麼學好php
來自於 1970-01-01 08:00:00
0
0
0
PHP擴充intl
來自於 1970-01-01 08:00:00
0
0
0
php數據獲取?
來自於 1970-01-01 08:00:00
0
0
0
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板