La chose la plus folle que j'ai jouée ces dernières années est d'envoyer des enveloppes rouges, en particulier pendant le nouvel an chinois. J'ai écrit un algorithme aléatoire pour les enveloppes rouges ci-dessous. C'est en fait assez simple. Il ne fournit qu'une façon de penser. J'espère que cela peut vous inspirer.
classe publique wxalgorithm {/ ** * @param moneysum Entrez le montant total * @param rednum Entrez le nombre de paquets rouges * / private static void wxalgorithm (Double Moneysum, int rednum) {// définir le montant minimum Double Moneymin = 0,01; Aléatoire aléatoire = nouveau aléatoire (); // point décimal exact 2 chiffres NumberFormat Formatter = new Decimalformat ("#. ##"); pour (int i = 1; i <rednum; i ++) {// un nombre aléatoire, la plage de valeurs est entre la valeur minimale et la chaîne de solde money = formatter.format (random.nextDouble () * (moneysum - Moneymin) + MoneyMin); // Conversion numérique Moneysum = double.valueof (formatter.format (monysum - double.valueof (argent))); System.out.println ("th" + i + "Enveloppe rouge:" + Money + "Yuan, Balance:" + Moneysum); } System.out.println ("Last Red Enveloppe:" + Moneysum + "Yuan, Balance:" + (Moneysum - Moneysum)); } public static void main (String [] args) {wxalgorithm (10.26, 9); }}Plus tard, certains algorithmes d'enveloppe rouge aléatoire WeChat ont été collectés en ligne pour votre référence.
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.
Il existe également de nombreux partages de code source passionnants: l'algorithme d'allocation aléatoire simple aléatoire de Java pour implémenter le code source.
package com.sunron.test; import java.math.bigdecimal; import org.junit.test; classe publique hongbao {@test public void testhonbao () {hb (100, 9, 0,01); // montant, numéro, valeur minimum // zb (); } void hb (double total, int num, double min) {for (int i = 1; i <num; i ++) {double safe_total = (total- (num-i) * min) / (num-i); Double Money = Math.Random () * (Safe_Total-Min) + min; BigDecimal Money_bd = new BigDecimal (Money); Money = Money_bd.SetScale (2, Bigdecimal.round_half_up) .DoubleValue (); Total = total de l'argent; Bigdecimal total_bd = new BigDecimal (total); total = total_bd.setscale (2, bigdecimal.round_half_up) .DoubleValue (); System.out.println ("th" + i + "Enveloppe rouge:" + Money + ", le solde est:" + total + "yuan"); } System.out.println ("th" + num + "Enveloppe rouge:" + Total + ", l'équilibre est: 0 yuan"); } void zb () {for (int a = 0; a <= 10000; a ++) {if (a% 1000 == 0) System.out.println (a); }}}Lorsque d'autres saisissent des enveloppes rouges, nous étudierons l'algorithme pour les enveloppes rouges aléatoires:
public static void main (String [] args) {// Le nombre d'enveloppes rouges int n ° = 10; // la quantité totale de flotte d'enveloppe rouge total = 100; Float de l'argent; // l'enveloppe rouge minimale double min = 1; double max; int i = 1; List math = new ArrayList (); Decimalformat df = new Decimalformat ("##. ##"); tandis que (i <nombre) {// assurez-vous que même si une enveloppe rouge est la plus grande, chaque enveloppe rouge ne sera pas inférieure à la valeur minimale des enveloppes rouges restantes max = total - min * (nombre - i); int k = (int) (nombre - i) / 2; // Assurez-vous que les enveloppes rouges reçues par les deux dernières personnes ne dépassent pas les enveloppes rouges restantes si (nombre - i <= 2) {k = nombre - i; } // La limite moyenne de l'enveloppe rouge maximale est max = max / k; // Assurez-vous que chaque enveloppe rouge est supérieure à la valeur minimale et ne sera pas supérieure à la valeur maximale de l'argent = (int) (min * 100 + math.random () * (max * 100 - min * 100 + 1)); Money = (Float) Money / 100; // conserve deux décimales de l'argent = float.parsefloat (df.format (argent)); total = (int) (total * 100 - argent * 100); total = total / 100; math.add (argent); System.out.println ("thread" + i + "Individual Get" + Money + "Left" + Total); i ++; // La dernière personne enlève l'enveloppe rouge restante if (i == numéro) {math.add (total); System.out.println ("Thread" + I + "Individual Get" + Total + "Left 0"); }} // Sélection de l'indice de la plus grande valeur dans le système System.out.println ("Thread dans cette série d'enveloppes rouges" + (math.indexof (Collection.max (math)) + 1) + "La meilleure chance personnelle"); }Pour un contenu plus excitant, veuillez cliquer sur "Résumé du didacticiel Android WeChat Development" et "Java WeChat Development Tutorial Résumé" Bienvenue à tout le monde pour apprendre et lire.
Ce qui précède sont les différents algorithmes d'enveloppe rouge aléatoire WeChat partagés par vous, qui vous fournissent une variété d'idées. J'espère qu'il sera utile pour tout le monde d'apprendre à utiliser l'algorithme de l'enveloppe rouge aléatoire WeChat. J'espère également que vous continuerez à prêter attention à un contenu plus excitant de Wulin.com.