ليس لدي ما أفعله ، ومؤخراً أحتاج إلى كتابة تسجيل دخول المستخدم إلى الصفحة الرئيسية لاكتشاف الأظرف الحمراء النقدية ، وليس هناك حد. أنا فقط حساب كيفية الكتابة إذا كان هناك حد. أعتقد أن هذا مشابه لأظرف WeChat الحمراء. بعد اكتمال متطلبات المشروع. صادفت أن نشر خوارزمية إزالة المغلف الأحمر كتبت نفسي. أنا شخصياً أعتقد أن هذه الخوارزمية هي أكثر محاكاة لقواعد الاستيلاء على المغلف الأحمر الفعلي. قل أقل هراء. نشر الكود أولاً ؛
استيراد java.math.bigdecimal ؛ استيراد java.util.arraylist ؛ استيراد java.util.collections ؛ استيراد java.Util.list ؛ استيراد java.util.random ؛ testmain الطبقة العامة {public static void main (string [] الرياضيات (BigDecimal.valueof (10) ، 6) ؛ if (moneys! = null) {bigDecimal b = new BigDecimal (0) ؛ لـ (BigDecimal BigDecimal: Moneys) {system.out.print (BigDecimal + "Yuan") ؛ B = B.Add (BigDecimal) ؛ } system.out.print ("المبلغ الإجمالي:" + b + "yuan") ؛ System.out.println () ؛ }}} /*** احسب كمية الأظرف الحمراء التي يتلقاها كل شخص ؛ الحد الأدنى لمقدار الأظرف الحمراء للشخص الواحد هو 0.01 يوان لكل شخص* param mm إجمالي الأظرف الحمراء* param عدد الأشخاص* @REGANTURN*/ قائمة ثابتة عامة <bigDecimal> Math (BigDecimal MMMM ، int number) {if (mmm.doblevalue () <number* 0.01) } عشوائي = جديد عشوائي () ؛ // المال ، يتم حساب 10 يوان بواسطة كسور تساوي 1000 نقطة من المال = mmmm.multiply (bigdecimal.valueof (100)). Intvalue () ؛ // إجمالي العدد العشوائي لعدد مزدوج = 0 ؛ // يحصل كل شخص على نقاط عشوائية مزدوجة [] arrrandom = new double [number] ؛ . // عدد الأشخاص الذين يحلقون نقاط عشوائية لـ (int i = 0 ؛ i <arrrandom.length ؛ i ++) {int r = random.nextint ((number) * 99)+1 ؛ العد += r ؛ arrrandom [i] = r ؛ } // احسب المبلغ الذي تم الحصول عليه بواسطة كل شخص عن طريق فتح الظرف الأحمر int c = 0 ؛ لـ (int i = 0 ؛ i <arrrandom.length ؛ i ++) {// أضف كل شخص عن طريق إضافة أرقام عشوائية لحساب النسبة المئوية لكل شخص double x = new double (arrrandom [i] / count) ؛ // يحصل كل شخص على المبلغ الذي حصل عليه كل شخص حسب النسبة المئوية int m = (int) math.floor (x * money) ؛ // إذا تم الحصول على المبلغ 0 ، فقم بتعيين القيمة الدنيا البالغة 1 في المائة إذا (M == 0) {M = 1 ؛ } // حساب المبلغ الإجمالي C += M ؛ // إذا لم يكن الشخص الأخير ، فقم بحسابه بشكل طبيعي إذا (i <arrrandom.length - 1) {arrmoney.add (new bigdecimal (m) .divide (bigdecimal (100))) ؛ } آخر {// إذا كان هذا هو آخر شخص ، فامنح الأموال المتبقية إلى آخر شخص arrmoney.add (جديد BigDecimal (Money - C + M). }} // تعطل الكمية التي تم الحصول عليها بشكل عشوائي من قبل كل شخص. shuffle (arrmoney) ؛ إرجاع arrmoney ؛ }}منطق التفكير لهذه المجموعة من الكود:
1. أولاً وقبل كل شيء ، نحتاج إلى تقسيم مبلغ المغلف الأحمر إلى أسهم N بناءً على عدد الأشخاص ، ولكن بسبب متوسط القيمة. إذا سجل كل شخص بالتساوي ، فسيبدو أنه قابل للعب.
2. ثانياً ، كيف يجب أن نميز؟ لضمان أن الأظرف الحمراء قابلة للعب. في الواقع ، لا أعتقد أن هذه المسألة. بعد كل شيء ، تعتمد الأظرف الحمراء فقط على الحظ. كنت محظوظًا في لعب الأظرف الحمراء لـ WeChat لـ 20 Yuan و 3 نقاط. أنا أيضا حصلت على 0.01 يوان. سيكون التزامن كبيرًا جدًا. لذا ، فإن مجموعة الرموز الخاصة بي تضع الجميع ببساطة رقم عشوائي (نطاق الأرقام العشوائية هو عدد الأشخاص * 100) ، وأضف الأرقام العشوائية لهؤلاء الأشخاص معًا وحساب النسبة المئوية للرقم العشوائي لكل شخص. توزيع الأرباح حسب هذه النسبة.
ما ورد أعلاه هو خوارزمية java eveled red Envelope Scipbing التي أدخلها المحرر (محاكاة المظروف الأحمر الحقيقي). آمل أن يكون ذلك مفيدًا للجميع. إذا كان لديك أي أسئلة ، فيرجى ترك رسالة لي وسوف يرد المحرر على الجميع في الوقت المناسب. شكرا جزيلا لدعمكم لموقع wulin.com!