ホームページ  >  記事  >  バックエンド開発  >  PHPを使用したWeChat紅包金額分割アルゴリズムについて

PHPを使用したWeChat紅包金額分割アルゴリズムについて

不言
不言オリジナル
2018-06-19 15:46:262882ブラウズ

この記事では、WeChat の赤い封筒の金額分割トライアルを実装するための PHP のアルゴリズムの例を主に紹介します。その内容は非常に優れているので、参考として共有します。

この記事では、PHP で WeChat の赤い封筒の量を分割するアルゴリズムの例を紹介し、皆さんと共有します。興味がある場合は、ご覧ください。

<?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 中国語 Web サイトに注目してください。

関連する推奨事項:

php を使用してクイック マネー支払い機能を実装する方法


#

以上がPHPを使用したWeChat紅包金額分割アルゴリズムについての詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。