自制红包生成器

3,999 阅读1分钟

红包生成器

git地址:github.com/pmw1014/hon…

这个是我自制的生成固定红包与随机红包,随机红包金额依据截断正态分布算法来生成。最近开发的项目需要做微信抢红包功能,网上找了一圈,没有合适的案例,于是索性自己写了一个。我这个的好处是:可以满足对随机红包个数及金额的范围可控性(这个非常重要)、生成的金额基本控制在中间值附近(提高可玩性)、简单易用。

下面是动图案例及代码例子

图像画案例

生成随机红包

require_once '../vendor/autoload.php';

use Hongbao\Hongbao;

/**
 * 生成随机红包
 */
$options = [
    'total_money' => 1000, // 总金额
    'total_number' => 1000, // 总红包数量
    'minimum_val' => 0.01, // 最小随机红包金额
    'maximum_val' => 20, // 最大随机红包金额
];

//通过try catch获取可能出现的参数设置错误信息
try {
    $hongbao = Hongbao::getInstance()->randomAmount($options);
    foreach ($hongbao as $result) {
        echo "<pre/>";
        print_r($result);
    }
} catch (\Exception $e) {
    $error = $e->getMessage();
    var_dump($error);
}

生成固定红包

require_once '../vendor/autoload.php';

use Hongbao\Hongbao;

/**
 * 生成固定红包
 */

$options = [
    'total_money' => 1000, // 总金额
    'total_number' => 1000, // 总红包数量
    'val' => 0.01, // 单个红包金额
];

//通过try catch获取可能出现的参数设置错误信息
try {
    $hongbao = Hongbao::getInstance()->fixedAmount($options);
    foreach ($hongbao as $result) {
        echo "<pre/>";
        print_r($result);
    }
} catch (\Exception $e) {
    $error = $e->getMessage();
    var_dump($error);
}