PHP实现微信红包金额拆分试玩的算法示例

2021-07-13 11:32:00 浏览数 (1)

本文介绍了PHP实现微信红包金额拆分试玩的算法示例,分享给大家,有兴趣的可以看一下:

<?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_mon/**【技术点,其实还需要更多地实践】**/ey_temp = $this->bonus_money;

$money_single_max = $this->money_single_max;

$i = 1;

while($i &lt; $this->bonus_num)

{

if ($money_single_max &gt; $bonus_money_temp)

{

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

}

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

$bonus_money_rad = floatval(sprintf(".2f", $bonus_money_rad));

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

$bonus_money_temp = floatval(sprintf(".2f", $bonus_money_temp));

$this-&gt;bonus[] = $bonus_money_rad;

//echo $bonus_money_rad . ',' . $bonus_money_temp . '<hr/>';

$i ;

}

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

}

//打印

public function output(){

$total = 0;

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

{

echo '红包' . ($k 1) . '=' . $v . '<br/>';

$total = $v;

}

echo '红包总金额:'.$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.6/

/1

红包总金额: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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

0 人点赞