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.
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
}
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.
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'enveloppe rouge restant
$result[] = $randAmount; // Ajouter le montant du tableau des résultats
}
$result[] = $remainAmount; // 将Montant restant添加到结果数组
return $result;
}
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.
Testons l'effet de fonctionnement de cet algorithme.
$amount = 10; // Montant de l'enveloppe rouge
$num = 5; // Nombre d'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.
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.