Heim  >  Artikel  >  Java  >  Detaillierte Einführung in den Red-Envelope-Implementierungsalgorithmus von Java WeChat

Detaillierte Einführung in den Red-Envelope-Implementierungsalgorithmus von Java WeChat

黄舟
黄舟Original
2017-03-07 10:33:171847Durchsuche

Dieser Artikel stellt hauptsächlich den Red-Envelope-Implementierungsalgorithmus von Java WeChat im Detail vor und listet den Kernalgorithmus des Red-Envelope auf, der einen bestimmten Referenzwert hat.

Mit dem aktuellen Micro-WeChat Da es immer beliebter wird, studieren immer mehr Menschen WeChat. Vor nicht allzu langer Zeit hat mich unser Unternehmen gebeten, eine Fragebogenumfrage und eine Funktion für rote Umschläge im öffentlichen WeChat-Konto zu erstellen Die wichtigsten Implementierungsschritte basieren alle auf den WeChat-Entwicklungsdokumenten für öffentliche Konten, die sehr detailliert sind. Im gesamten Prozess muss nur der Red-Envelope-Algorithmus sorgfältig geschrieben werden, da es schließlich um Geld geht, also muss man vorsichtig sein. Und Sie müssen nicht nur rote Umschläge in WeChat senden, wir auch Wenn Sie eine APP erstellen, stoßen Sie möglicherweise auch auf die Funktion zum Senden roter Umschläge. Daher ist hier der Kernalgorithmus für rote Umschläge aufgeführt, damit alle gemeinsam lernen und lernen können.

public static List getRed(int number,float total,double min){
  //红包数 
  //int number = 300; 
  //红包总额 
 // float total = 500; 
  float money; 
  //最小红包 
  //double min = 0.48; 
  double max; 
  int i = 1; 
  List math = new ArrayList(); 
  DecimalFormat df = new DecimalFormat("###.##"); 
  while (i < number) { 
  //保证即使一个红包是最大的了,后面剩下的红包,每个红包也不会小于最小值 
  max = total - min * (number - i); 
  int k = (int)(number - i) / 2; 
  //保证最后两个人拿的红包不超出剩余红包 
  if (number - i <= 2) { 
   k = number - i; 
   } 
  //最大的红包限定的平均线上下 
  max = max / k; 
  //保证每个红包大于最小值,又不会大于最大值 
  money = (int) (min * 100 + Math.random() * (max * 100 - min * 100 + 1)); 
  money = (float)money / 100; 
  //保留两位小数 
  money = Float.parseFloat(df.format(money)); 
  total=(int)(total*100 - money*100); 
  total = total/100; 
  math.add(money); 
  System.out.println("第" + i + "个人拿到" + money + "剩下" + total); 
  i++; 
  //最后一个人拿走剩下的红包 
  if (i == number) { 
   math.add(total); 
   System.out.println("第" + i + "个人拿到" + total + "剩下0"); 
   } 
  }
  //取数组中最大的一个值的索引 
  System.out.println("本轮发红包中第" + (math.indexOf(Collections.max(math)) + 1) + "个人手气最佳");
 return math; 
  }

Das Obige ist die detaillierte Einführung des Java-WeChat-Red-Envelope-Implementierungsalgorithmus. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (). www.php.cn)!


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn