Maison  >  Article  >  Java  >  Introduction détaillée à l'algorithme de mise en œuvre de l'enveloppe rouge Java WeChat

Introduction détaillée à l'algorithme de mise en œuvre de l'enveloppe rouge Java WeChat

黄舟
黄舟original
2017-03-07 10:33:171848parcourir

Cet article présente principalement en détail l'algorithme de mise en œuvre de l'enveloppe rouge Java WeChat et répertorie l'algorithme de base de l'enveloppe rouge, qui a une certaine valeur de référence. Les amis intéressés peuvent s'y référer

Avec le micro WeChat actuel. Devenant de plus en plus populaire, de plus en plus de personnes étudient WeChat. Il n'y a pas si longtemps, notre société m'a demandé de créer une fonction d'enquête par questionnaire et d'enveloppe rouge dans le compte public WeChat. Après une période de recherche, la fonction a été complétée. Les principales étapes de mise en œuvre sont toutes basées sur les documents de développement du compte public WeChat, qui sont très détaillés, dans l'ensemble du processus, seul l'algorithme de l'enveloppe rouge doit être rédigé avec soin, car après tout, l'argent est impliqué, il faut donc être prudent. et non seulement vous devez envoyer des enveloppes rouges dans WeChat, mais lors de la création d'une application, vous pouvez également rencontrer la fonction d'envoi d'enveloppes rouges, donc l'algorithme de base des enveloppes rouges est répertorié ici pour que tout le monde puisse étudier et étudier ensemble.

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; 
  }

Ce qui précède est l'introduction détaillée de l'algorithme de mise en œuvre de l'enveloppe rouge Java WeChat. Pour plus de contenu connexe, veuillez faire attention au site Web chinois PHP (. www.php.cn) !


Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn