Une nuit il y a quelques jours, j'ai soudain pensé qu'il devrait y avoir un algorithme aléatoire pour WeChat Red Enveloppes, alors j'ai essayé de les écrire moi-même, mais je ne savais pas si c'était juste. J'ai regardé la déclaration en ligne. Il semblait que le fonctionnaire n'avait pas donné d'algorithme définitif jusqu'à présent, j'ai donc dû me ridiculiser ici et publier le code d'abord:
public static double [] getMoney (Double Money, int num) {random r = new random (); Decimalformat format = new Decimalformat (". ##"); double middle = double.parsedouble (format.format (argent / num)); double [] dou = nouveau double [num]; Double RedMoney = 0; Double NextMoney = Money; double somme = 0; int index = 0; pour (int i = num; i> 0; i -) {if (i == 1) {dou [index] = nextMoney; } else {while (true) {string str = format.format (r.nextDouble () * nextMoney); redmoney = double.parsedouble (str); if (redmoney> 0 && redmoney <middle) {break; }} nextMoney = double.parsedouble (format.format (nextMoney - redmoney)); sum = sum + redmoney; dou [index] = redmoney; middle = double.parsedouble (format.format (nextmoney / (i-1))); index ++; }} return Dou; }Voici l'idée de base: calculer d'abord la valeur moyenne de l'enveloppe rouge, puis passer une enveloppe rouge avec un nombre aléatoire d'enveloppes rouges inférieures à cette valeur moyenne. Une fois l'enveloppe rouge envoyée, la quantité totale de l'enveloppe rouge doit être réduite en conséquence. Dans le même temps, recalculez la moyenne: le nouveau montant total% (numéro d'enveloppe rouge total d'origine -1), jusqu'à la dernière enveloppe rouge, mettez tout le montant restant.
Merci d'avoir lu, j'espère que cela peut vous aider. Merci pour votre soutien à ce site!