数日前のある夜、私は突然、WeChat Red Envelopesにランダムアルゴリズムがあるべきだと思ったので、自分で書こうとしましたが、それが正しいかどうかはわかりませんでした。私はオンラインで声明を見ました。当局はこれまで明確なアルゴリズムを与えていないように思われたので、ここで自分自身を馬鹿にして最初にコードを投稿する必要がありました。
public static double [] getMoney(double money、int num){random r = new Random(); decimalformat format = new decimalformat( "。##"); double middle = double.parsedouble(format.format(money/num)); double [] dou = new double [num]; double redmoney = 0; double nextmoney = money;二重和= 0; int index = 0; for(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;中間= double.ParseDouble(format.format(nextmoney/(i-1)));インデックス++; }} return dou; }基本的なアイデアは次のとおりです。最初に赤い封筒の平均値を計算し、次にこの平均値よりも小さい乱数の赤い封筒で赤い封筒を渡します。赤い封筒が送られた後、それに応じて赤い封筒の合計量を減らす必要があります。同時に、平均を再計算します:新しい総量%(元の総赤エンベロープ番号-1)は、最後の赤いエンベロープまで、残りのすべての量を入れます。
読んでくれてありがとう、私はそれがあなたを助けることができることを願っています。このサイトへのご支援ありがとうございます!