Cet article présente principalement en détail la version PHP de l'algorithme de génération aléatoire de l'enveloppe rouge WeChat, qui a une certaine valeur de référence. Les amis intéressés peuvent s'y référer
Pensez-y et écrivez-le vous-même en PHP. L'algorithme de génération aléatoire d'enveloppe rouge de WeChat réalise des fonctions similaires (en fait, je n'ose pas dire que c'est un algorithme).
// $bonus_total Montant total de l'enveloppe rouge
// $bonus_count Nombre d'enveloppes rouges
// $bonus_type Type d'enveloppe rouge 1 = combattre l'enveloppe rouge chanceuse 0 = enveloppe rouge ordinaire
function randBonus($bonus_total=0, $bonus_count=3, $bonus_type=1){ $bonus_items = array(); // 将要瓜分的结果 $bonus_balance = $bonus_total; // 每次分完之后的余额 $bonus_avg = number_format($bonus_total/$bonus_count, 2); // 平均每个红包多少钱 $i = 0; while($i<$bonus_count){ if($i<$bonus_count-1){ $rand = $bonus_type?(rand(1, $bonus_balance*100-1)/100):$bonus_avg; // 根据红包类型计算当前红包的金额 $bonus_items[] = $rand; $bonus_balance -= $rand; }else{ $bonus_items[] = $bonus_balance; // 最后一个红包直接承包最后所有的金额,保证发出的总金额正确 } $i++; } return $bonus_items; }
D'accord, faisons-en l'expérience maintenant
// 发3个拼手气红包,总金额是100元 $bonus_items = randBonus(100, 3, 1); // 查看生成的红包 var_dump($bonus_items); // 校验总金额是不是正确,看看微信有没有坑我们的钱 var_dump(array_sum($bonus_items));
Autre version implémentée à l'aide de tableaux, le principe est similaire :
function sendRandBonus($total=0, $count=3, $type=1){ if($type==1){ $input = range(0.01, $total, 0.01); if($count>1){ $rand_keys = (array) array_rand($input, $count-1); $last = 0; foreach($rand_keys as $i=>$key){ $current = $input[$key]-$last; $items[] = $current; $last = $input[$key]; } } $items[] = $total-array_sum($items); }else{ $avg = number_format($total/$count, 2); $i = 0; while($i<$count){ $items[] = $i<$count-1?$avg:($total-array_sum($items)); $i++; } } return $items; }
Résumé : Ce qui précède C'est tout le contenu de cet article, j'espère qu'il sera utile à l'étude de chacun.
Recommandations associées :
Explication détaillée du cas de PHP+Ajax détectant si le réseau est normal
Explication détaillée de l'algorithme SnowFlake pour PHP pour générer des identifiants uniques
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!