Suatu malam beberapa hari yang lalu, tiba -tiba saya berpikir bahwa harus ada algoritma acak untuk amplop merah WeChat, jadi saya mencoba menulisnya sendiri, tetapi saya tidak tahu apakah itu benar. Saya melihat pernyataan secara online. Tampaknya pejabat itu belum memberikan algoritma yang pasti sejauh ini, jadi saya harus membodohi diri sendiri di sini dan memposting kode terlebih dahulu:
public static double [] getMoney (uang ganda, int num) {acak r = acak baru (); Format decimalformat = decimalformat baru (". ##"); double middle = double.parsedouble (format.format (uang/num)); Double [] dou = Double [num] baru; Double Redmoney = 0; ganda nextmoney = uang; Jumlah ganda = 0; INT INDEX = 0; untuk (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)); jumlah = jumlah + redmoney; Dou [indeks] = RedMoney; tengah = double.parsedouble (format.format (nextMoney/(i-1))); indeks ++; }} return dou; }Berikut adalah ide dasar: Pertama -tama hitung nilai rata -rata amplop merah, dan kemudian lewati amplop merah dengan jumlah acak amplop merah lebih kecil dari nilai rata -rata ini. Setelah amplop merah dikirim, jumlah total amplop merah perlu dikurangi. Pada saat yang sama, menghitung ulang rata -rata: jumlah total baru % (total total amplop merah -1), sampai amplop merah terakhir, masukkan semua jumlah yang tersisa.
Terima kasih telah membaca, saya harap ini dapat membantu Anda. Terima kasih atas dukungan Anda untuk situs ini!