Position actuelle: Accueil> Derniers articles> Exemple de PHP implémente l'algorithme de fractionnement de la quantité d'enveloppe rouge WeChat | Méthode d'allocation du montant de l'enveloppe rouge aléatoire

Exemple de PHP implémente l'algorithme de fractionnement de la quantité d'enveloppe rouge WeChat | Méthode d'allocation du montant de l'enveloppe rouge aléatoire

gitbox 2025-07-27

Exemple d'algorithme

La division du montant des enveloppes rouges WeChat est un problème courant. Cet article mettra en œuvre un exemple d'algorithme de division du montant de l'enveloppe rouge via le langage PHP pour aider les développeurs à mieux comprendre l'allocation aléatoire des quantités d'enveloppe rouge.

Créer une fonction

Tout d'abord, nous devons créer une fonction pour diviser la quantité de l'enveloppe rouge. Les paramètres de la fonction sont la quantité d'enveloppe rouge et le numéro d'enveloppe rouge.

 
function divideAmount($amount, $num) {
    // TODO: Implémentez l'algorithme de fractionnement du montant de l'enveloppe rouge
}

Idées d'algorithmes

Ensuite, analysons les idées algorithmiques de division du montant de l'enveloppe rouge.

En supposant que la quantité d'enveloppes rouges est un yuan et que le nombre d'enveloppes rouges est n, alors la quantité maximale de chaque enveloppe rouge est a / n yuan et la quantité minimale est de 0,01 yuan.

Nous pouvons d'abord générer des nombres aléatoires N-1 au hasard entre 0 et A comme quantité initiale de l'enveloppe rouge. Ensuite, allouer le montant restant à la dernière enveloppe rouge.

Implémentation d'algorithme

Maintenant, nous commençons à implémenter l'algorithme de la division du montant de l'enveloppe rouge.

 
function divideAmount($amount, $num) {
    $remainAmount = $amount; // Montant restant
    $remainNum = $num; // Le numéro d'enveloppe rouge restant
    $result = array(); // Résultats partagés
    for ($i = 0; $i < $num - 1; $i++) {
        $maxAmount = $remainAmount / $remainNum * 2; // Montant maximum
        $randAmount = mt_rand(1, $maxAmount * 100) / 100; // Montant généré de manière aléatoire,Gardez deux décimales
        $remainAmount -= $randAmount; // 更新Montant restant
        $remainNum--; // 更新Le numéro d&#39;enveloppe rouge restant
        $result[] = $randAmount; // Ajouter le montant du tableau des résultats
    }
    $result[] = $remainAmount; // 将Montant restant添加到结果数组
    return $result;
}

Explication algorithme

Premièrement, nous devons définir deux variables, $ restamount représente le montant restant et $ restenum représente le numéro d'enveloppe rouge restant.

Dans la boucle, nous calculons d'abord le montant maximum $ maxamount, puis utilisons la fonction MT_RAND pour générer un montant aléatoire un montant $ randamount entre 1 et $ maxamount. Ensuite, nous mettons à jour le montant restant et le numéro d'enveloppe rouge restant, puis ajoutons $ randamount au tableau de résultat.

Enfin, nous ajoutons le montant restant au tableau de résultat et renvoyons le tableau de résultat.

Échantillon

Testons l'effet de fonctionnement de cet algorithme.

 
$amount = 10; // Montant de l&#39;enveloppe rouge
$num = 5; // Nombre d&#39;enveloppes rouges
$result = divideAmount($amount, $num);
foreach ($result as $amount) {
    echo $amount . "Yuan\n";
}

Exécutez le code ci-dessus et le résultat de sortie est le suivant:

 
1.07Yuan
2.48Yuan
2.28Yuan
2.42Yuan
1.75Yuan

On peut voir que la quantité d'enveloppe rouge a été divisée avec succès en 5 quantités différentes.

Résumer

Cet article met en œuvre un exemple d'algorithme de la quantité de montage de l'enveloppe rouge WeChat par le langage PHP.

En analysant les idées d'algorithmes et les détails de mise en œuvre, nous pouvons clairement comprendre le processus de division du montant de l'enveloppe rouge.

Si vous développez des fonctions liées aux enveloppes rouges WeChat, j'espère que vous pourrez apprendre des exemples d'algorithmes dans cet article.