私には何もすることはありません。最近、ユーザーのログインをホームページに書き留めて現金の赤い封筒を発見する必要がありますが、制限はありません。制限がある場合、書き方を計算しました。これはWeChat Red Envelopesに似ていると思います。プロジェクトの要件が完了した後。たまたま自分で書いた赤い封筒除去アルゴリズムを投稿しました。個人的には、このアルゴリズムは実際の赤い封筒のグラブルールをよりシミュレートしていると思います。ナンセンスを少なく言う。最初にコードを投稿します。
java.math.bigdecimal; import java.util.arraylist; Import java.util.collections; import java.util.list; import java.util.random; public static void main(string [] args){for(int i = 0; i <10; i <10; i <10; i <10; i <10; i <10; i <10; i <10; i <10; i <数学(bigdecimal.valueof(10)、6); if(moneys!= null){bigdecimal b = new bigdecimal(0); for(bigdecimal bigdecimal:moneys){system.out.print(bigdecimal + "yuan"); b = b.add(bigdecimal); } system.out.print( "合計金額:" + b + "yuan"); System.out.println(); }}} /***各人が受け取った赤い封筒の量を計算します。 1人あたりの赤い封筒の最小量は、1人あたり0.01元です* @param mm合計赤い赤い封筒* @param数@return*/ public static list <bigdecimal> Math(bigdecimal mmmm、int number){if(mmm.doublevalue()<number* 0.01){return null; } randomランダム= new Random(); //お金、10元は、1000ポイントに等しい分数によって計算されますint money = mmmm.multiply(bigdecimal.valueof(100))。intvalue(); //総乱数Double Count = 0; //各人はランダムなポイントをdouble [] arrrandom = new double [number]; //各人がマネーリスト<bigdecimal> arrmoney = new arrayList <bigDecimal>(number); //(int i = 0; i <arrrandom.length; i ++){int r = random.nextint((number) * 99)+1; count += r; arrandom [i] = r; } //赤いエンベロープを開くことにより、各個人が取得した量を計算しますint c = 0; for(int i = 0; i <arrrandom.length; i ++){//ランダム数を追加して各人の割合を計算して各人を加算しますx = new double(arrrandom [i] / count); //各個人は、各人が取得した金額をパーセントint m =(int)math.floor(x * money); // 0の量が取得された場合、(m == 0){m = 1; } //合計金額C += Mを計算します。 //最後の人ではない場合、通常(i <arrrandom.length -1){arrmoney.add(new bigdecimal(m).divide(new bigdecimal(100))); } else {//最後の人の場合、残りのお金を最後の人に与えますarrmoney.add(new bigdecimal(money -c + m).divide(new bigdecimal(100))); }} //各パーソンコレクションによって得られた量をランダムに破壊します。シャッフル(arrmoney); arrmoneyを返します。 }}このコードセットの思考論理:
1.まず、人数に基づいて赤い封筒の量をN株に分割する必要がありますが、平均値のためです。それぞれの人が均等にスコアリングしすぎると、プレイ可能であるように見えます。
2。第二に、どのように区別すればよいですか?赤い封筒が再生可能であることを確認します。実際、私はこれらの問題を考えていません。結局のところ、赤い封筒は運のみに依存しています。私は20元と3人のポイントでWeChat Red Envelopesを演奏することに不運でした。 0.01元も手に入れました。並行性も非常に大きくなります。したがって、私のコードのセットは、すべての人に乱数(乱数の範囲は * 100人の数です)を配置し、これらの人の乱数を一緒に追加し、各人の乱数の割合を計算します。この割合に従って配当を分配します。
上記は、編集者によって導入されたJava実装のシンプルな赤い封筒グラブグラブグラブアルゴリズムです(実際の赤い封筒をつかむ)。私はそれが誰にでも役立つことを願っています。ご質問がある場合は、メッセージを残してください。編集者は、すべての人に時間内に返信します。 wulin.comのウェブサイトへのご支援ありがとうございます!