ホームページ >Java >&#&チュートリアル >Java WeChat レッドエンベロープ実装アルゴリズムの詳細な紹介

Java WeChat レッドエンベロープ実装アルゴリズムの詳細な紹介

黄舟
黄舟オリジナル
2017-03-07 10:33:171893ブラウズ

この記事では主にJava WeChatの赤い封筒の実装アルゴリズムを詳細に紹介し、一定の参考値を持つ赤い封筒のコアアルゴリズムをリストします。興味のある友人はそれを参照してください

WeChatの人気がますます高まっているため、 WeChat を研究する人が増えています。少し前に、当社から WeChat パブリック アカウントにアンケート調査と赤い封筒機能を作成するよう依頼されました。この機能は研究期間を経て完成し、主要な実装手順はすべて完了しました。これは WeChat 公式アカウント開発ドキュメントに基づいており、プロセス全体で慎重に記述する必要があるのは赤い封筒のアルゴリズムだけです。結局のところ、お金が関係しているため、注意が必要です。 WeChat で赤い封筒を送信する必要がありますが、APP を作成するときに赤い封筒の送信が必要な機能に遭遇した場合に、赤い封筒のコア アルゴリズムがここにリストされているので、みんなで一緒に勉強することができます。

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

上記は、Java WeChat レッドエンベロープ実装アルゴリズムの詳細な紹介です。その他の関連コンテンツについては、PHP 中国語 Web サイト (www.php.cn) に注目してください。


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。