في إحدى الليالي قبل بضعة أيام ، اعتقدت فجأة أنه يجب أن يكون هناك خوارزمية عشوائية للأظرف الحمراء في WeChat ، لذلك حاولت أن أكتبها بنفسي ، لكنني لم أكن أعرف ما إذا كان هذا صحيحًا. نظرت إلى البيان عبر الإنترنت. يبدو أن المسؤول لم يعط خوارزمية محددة حتى الآن ، لذلك كان عليّ أن أخدع نفسي هنا ونشر الكود أولاً:
static static double [] getMoney (Double Money ، int num) {random r = new Random () ؛ تنسيق decimalformat = جديد decimalformat (". ##") ؛ double middle = double.parsedouble (format.format (money/num)) ؛ Double [] dou = New Double [num] ؛ redmoney مزدوج = 0 ؛ مزدوج NextMoney = المال ؛ مجموع مزدوج = 0 ؛ int index = 0 ؛ لـ (int i = num ؛ i> 0 ؛ i-) {if (i == 1) {dou [index] = nextMoney ؛ } آخر {بينما (صحيح) {string str = format.format (r.nextDouble ()*nextMoney) ؛ redmoney = double.parsedouble (str) ؛ if (redMoney> 0 && redmoney <middle) {break ؛ }} nextMoney = double.parsedouble (format.format (nextMoney - RedMoney)) ؛ مجموع = مجموع + redmoney ؛ دو [فهرس] = RedMoney ؛ middle = double.parsedouble (format.format (nextMoney/(I-1))) ؛ فهرس ++ ؛ }} return dou ؛ }فيما يلي الفكرة الأساسية: احسب أولاً متوسط القيمة للمغلف الأحمر ، ثم تمرير مظروف أحمر مع عدد عشوائي من الأظرف الحمراء أصغر من هذه القيمة المتوسطة. بعد إرسال الظرف الأحمر ، يجب تقليل المبلغ الإجمالي للمغلف الأحمر وفقًا لذلك. في الوقت نفسه ، إعادة حساب المتوسط: إجمالي المبلغ الجديد ٪ (رقم المغلف الأحمر الأصلي -1) ، حتى آخر مظروف أحمر ، وضع كل المبلغ المتبقي فيه.
شكرا لك على القراءة ، آمل أن تساعدك. شكرا لك على دعمك لهذا الموقع!