Heim  >  Artikel  >  Backend-Entwicklung  >  Informationen zum Algorithmus zum Aufteilen des Betrags des roten WeChat-Umschlags mithilfe von PHP

Informationen zum Algorithmus zum Aufteilen des Betrags des roten WeChat-Umschlags mithilfe von PHP

不言
不言Original
2018-06-19 15:46:262936Durchsuche

In diesem Artikel wird hauptsächlich das Algorithmusbeispiel für die Implementierung des WeChat-Tests zur Aufteilung des roten Umschlags vorgestellt. Ich werde ihn jetzt als Referenz verwenden.

In diesem Artikel wird ein Beispiel für den Algorithmus zum Aufteilen des roten WeChat-Umschlagsbetrags in PHP vorgestellt. Wenn Sie interessiert sind, können Sie einen Blick darauf werfen:

<?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();
?>

Demo-Ergebnisse:

Rotes Paket 1=12,36
Rotes Paket 2=24,37
Rotes Paket 3 =42,71
Rotes Paket 4=36,92
Rotes Paket 5 =25,84
Roter Umschlag 6=23,17
Roter Umschlag 7=15,92
Roter Umschlag 8=1,35
Roter Umschlag 9=7,75
Roter Umschlag 10=9,61
Gesamtmenge des roten Umschlags: 200

Roter Umschlag 1=24,59
Roter Umschlag 2=17,66
Roter Umschlag 3=29,67
Roter Umschlag 4=32,34
Roter Umschlag 5=12,67
Roter Umschlag 6=37,15
Roter Umschlag 7=17,41
Roter Umschlag 8=15,23
Roter Umschlag 9=6,13
Roter Umschlag 10= 7,15
Gesamtbetrag des roten Umschlags: 200

Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, er wird für das Studium aller hilfreich sein. Weitere Informationen finden Sie auf der chinesischen PHP-Website Inhalt!

Verwandte Empfehlungen:

So verwenden Sie PHP, um die Funktion für schnelle Geldzahlungen zu implementieren

Das obige ist der detaillierte Inhalt vonInformationen zum Algorithmus zum Aufteilen des Betrags des roten WeChat-Umschlags mithilfe von PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn