現在の位置: ホーム> 最新記事一覧> PHP実装の例wechat red envelope量分割アルゴリズム|ランダムレッドエンベロープ量割り当て方法

PHP実装の例wechat red envelope量分割アルゴリズム|ランダムレッドエンベロープ量割り当て方法

gitbox 2025-07-27

アルゴリズムの例

WeChat Red Envelopesの分割量は一般的な問題です。この記事では、PHP言語を介して分割された赤いエンベロープ量のアルゴリズムの例を実装して、開発者が赤いエンベロープの量のランダム割り当てをよりよく理解できるようにします。

関数を作成します

まず、赤い封筒の量を分割する関数を作成する必要があります。関数のパラメーターは、赤いエンベロープ量と赤い封筒数です。

 
function divideAmount($amount, $num) {
    // TODO: 赤いエンベロープ量分割アルゴリズムを実装します
}

アルゴリズムのアイデア

次に、赤いエンベロープ量の分割に関するアルゴリズムのアイデアを分析しましょう。

赤い封筒の量が元であり、赤い封筒の数がnであると仮定すると、各赤い封筒の最大量はa/n yuanで、最小量は0.01元です。

最初に、赤い封筒の初期量として、0からAの間でn-1乱数をランダムに生成できます。次に、残りの量を最後の赤い封筒に割り当てます。

アルゴリズムの実装

次に、赤いエンベロープ量の分割のアルゴリズムの実装を開始します。

 
function divideAmount($amount, $num) {
    $remainAmount = $amount; // 残りの金額
    $remainNum = $num; // 残りの赤いエンベロープ番号
    $result = array(); // 結果を分割します
    for ($i = 0; $i < $num - 1; $i++) {
        $maxAmount = $remainAmount / $remainNum * 2; // 最大量
        $randAmount = mt_rand(1, $maxAmount * 100) / 100; // ランダムに生成された量,小数点以下の場所を2つ保管してください
        $remainAmount -= $randAmount; // 更新残りの金額
        $remainNum--; // 更新残りの赤いエンベロープ番号
        $result[] = $randAmount; // 結果アレイに金額を追加します
    }
    $result[] = $remainAmount; // 将残りの金額添加到结果数组
    return $result;
}

アルゴリズムの説明

まず、2つの変数を定義する必要があります。$の残りは残りの量を表し、$ remainnumは残りの赤いエンベロープ数を表します。

ループでは、最初に最大$ maxamountを計算し、次にMT_RAND関数を使用して、1〜maxamountの間の金額$ randamountをランダムに生成します。次に、残りの量と残りの赤いエンベロープ番号を更新し、結果アレイに$ randamountを追加します。

最後に、結果アレイに残りの量を追加し、結果アレイを返します。

サンプルの実行

このアルゴリズムの操作効果をテストしましょう。

 
$amount = 10; // 赤い封筒の量
$num = 5; // 赤い封筒の数
$result = divideAmount($amount, $num);
foreach ($result as $amount) {
    echo $amount . "元\n";
}

上記のコードを実行すると、出力結果は次のとおりです。

 
1.07元
2.48元
2.28元
2.42元
1.75元

赤いエンベロープの量が5つの異なる量に正常に分割されたことがわかります。

要約します

この記事では、PHP言語を介して分割されたWeChat Red Envelopeの量のアルゴリズム例を実装しています。

アルゴリズムのアイデアと実装の詳細を分析することにより、赤いエンベロープ量の分割のプロセスを明確に理解できます。

WeChat Red Envelopesに関連する機能を開発している場合は、この記事のアルゴリズムの例から学ぶことができることを願っています。