Maison > Article > développement back-end > Explication détaillée du cas de l'algorithme de fractionnement du montant de l'enveloppe rouge implémenté en PHP
Cette fois, je vais vous apporter une explication détaillée du cas d'implémentation par PHP de l'algorithme de fractionnement du montant de l'enveloppe rouge. Quelles sont les précautions pour la mise en œuvre par PHP de l'algorithme de fractionnement du montant de l'enveloppe rouge. cas pratique, jetons un coup d'oeil.
<?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 'mt_rand=' . $mt_rand . ', mt_getrandmax=' . $mt_getrandmax . '<hr/>'; 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 . ',' . $bonus_money_temp . '<hr/>'; $i++; } $this->bonus[] = $bonus_money_temp;//分配剩余金额给最后一个红包 } //打印 public function output(){ $total = 0; foreach($this->bonus as $k => $v) { echo '红包' . ($k+1) . '=' . $v . '<br/>'; $total += $v; } echo '红包总金额:'.$total; } } $CBonus = new CBonus(); $CBonus->compute(); $CBonus->output(); ?>
Résultats de la démonstration :
Paquet rouge 1=12,36
Paquet rouge 2=24,37
Paquet rouge 3=42,71
Paquet rouge 4=36,92
Paquet rouge 5=25,84
Enveloppe rouge 6=23,17
Enveloppe rouge 7=15,92
Enveloppe rouge 8=1,35
Enveloppe rouge 9=7,75
Enveloppe rouge 10=9,61
Montant total de l'enveloppe rouge : 200
Paquet rouge 1=24,59
Paquet rouge 2=17,66
Paquet rouge 3=29,67
Paquet rouge 4=32,34
Paquet rouge 5= 12,67
Paquet rouge 6=37,15
Paquet rouge 7=17,41
Enveloppe rouge 8=15,23
Enveloppe rouge 9=6,13
Enveloppe rouge 10=7,15
Montant total de l'enveloppe rouge : 200
Je pense que vous maîtrisez la méthode après avoir lu le cas dans cet article, plus excitant. Veuillez faire attention aux autres articles connexes sur le site Web chinois de php !
Lecture recommandée :
Explication détaillée du cas d'inversion de dépendance PHP
Explication détaillée des étapes permettant à PHP d'obtenir le fichier types mime
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!