إن أكثر شيء جنون لعبته في السنوات الأخيرة هو إرسال مظاريف حمراء ، خاصة خلال العام الصيني الجديد. كتبت خوارزمية عشوائية للأظرف الحمراء أدناه. إنه في الواقع بسيط للغاية. إنه يوفر فقط طريقة للتفكير. آمل أن يلهمك.
الفئة العامة wxalgorithm { / *** param moneysum أدخل المبلغ الإجمالي* param rednum أدخل عدد الحزم الحمراء* / private static void wxalgorithm (double moneysum ، int rednum) {// تعيين الحد الأدنى للمبلغ المزدوج الأموال = 0.01 ؛ عشوائي عشوائي = جديد عشوائي () ؛ // الدقيق النقطة العشرية 2 أرقام numberformat formatter = new decimalformat ("#. ##") ؛ لـ (int i = 1 ؛ i <rednum ؛ i ++) {// رقم عشوائي ، يكون نطاق القيم بين الحد الأدنى للقيمة وأموال التوازن = formatter.format (random.nextDouble () * (moneysum - moneymin)+moneymin) ؛ // التحويل العددي moneysum = double.valueof (formatter.format (moneysum - double.valueof (money))) ؛ System.out.println ("TH" + I + "Red Envelope:" + Money + "Yuan ، Balance:" + moneysum) ؛ } System.out.println ("Last Red Invelope:" + Moneysum + "Yuan ، Balance:" + (Moneysum - Moneysum)) ؛ } public static void main (string [] args) {wxalgorithm (10.26 ، 9) ؛ }}في وقت لاحق ، تم جمع بعض خوارزميات الظرف الأحمر العشوائي على الإنترنت للرجوع إليها.
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) ، حتى آخر مظروف أحمر ، وضع كل المبلغ المتبقي فيه.
هناك أيضًا العديد من مشاركة التعليمات البرمجية المصدر المثيرة: خوارزمية تخصيص الظرف الأحمر العشوائي البسيط من Java لتنفيذ رمز المصدر.
package com.sunron.test ؛ استيراد java.math.bigdecimal ؛ استيراد org.junit.test ؛ فئة عامة hongbao {test public void testhonbao () {hb (100 ، 9 ، 0.01) ؛ // المبلغ ، العدد ، القيمة الحد الأدنى للقيمة (zb () ؛ } void hb (total double ، int num ، double min) {for (int i = 1 ؛ i <num ؛ i ++) {double safe_total = (total- (num-i)*min)/(num-i) ؛ المال المزدوج = Math.Random ()*(Safe_Total-Min)+Min ؛ BigDecimal Money_bd = جديد BigDecimal (المال) ؛ money = money_bd.setscale (2 ، bigdecimal.round_half_up) .doublevalue () ؛ المجموع = إجمالي المال ؛ BigDecimal Total_bd = جديد BigDecimal (المجموع) ؛ TOTAL = TOTAL_BD.SETSCALE (2 ، BigDecimal.round_half_up) .DoubleValue () ؛ System.out.println ("TH"+I+"Red Envelope:"+Money+"، الرصيد هو:"+Total+"Yuan") ؛ } system.out.println ("th"+num+"envelope red:"+total+"، التوازن هو: 0 yuan") ؛ } void zb () {for (int a = 0 ؛ a <= 10000 ؛ a ++) {if (a ٪ 1000 == 0) system.out.println (a) ؛ }}}عندما يمسك الآخرون مظاريف حمراء ، سندرس الخوارزمية للأظرف الحمراء العشوائية:
الفراغ الثابت العام (سلسلة [] args) {// عدد الأظرف الحمراء int number = 10 ؛ // إجمالي الكمية من الظرف الأحمر إجمالي = 100 ؛ تعويم المال // الحد الأدنى للمغلف الأحمر المزدوج = 1 ؛ مزدوج الحد الأقصى int i = 1 ؛ قائمة Math = new ArrayList () ؛ decimalformat df = new decimalformat ("##. ##") ؛ بينما (i <number) {// تأكد من أنه حتى لو كان الظرف الأحمر هو الأكبر ، فلن يكون كل مظروف أحمر أقل من الحد الأدنى لقيمة الأظرف الحمراء المتبقية بحد أقصى = إجمالي - دقيقة * (رقم - i) ؛ int k = (int) (number - i) / 2 ؛ // تأكد من أن الأظرف الحمراء التي يتلقاها آخران لا تتجاوز الأظرف الحمراء المتبقية إذا (الرقم - i <= 2) {k = number - i ؛ } // متوسط الحد الأقصى للمغلف الأحمر هو الحد الأقصى = max /k ؛ // تأكد من أن كل مظروف أحمر أكبر من القيمة الدنيا ولن يكون أكبر من أقصى قيمة القيمة = (int) (دقيقة * 100 + Math.Random () * (الحد الأقصى * 100 - دقيقة * 100 + 1)) ؛ المال = (تعويم) المال / 100 ؛ // الاحتفاظ بمساعدين عشريين الأموال = float.parsefloat (df.format (money)) ؛ إجمالي = (int) (إجمالي*100 - المال*100) ؛ المجموع = المجموع/100 ؛ Math.add (المال) ؛ System.out.println ("Thread" + I + "الفردية GET" + Money + "Left" + Total) ؛ i ++ ؛ // يسلب الشخص الأخير الظرف الأحمر المتبقي إذا (i == number) {math.add (total) ؛ System.out.println ("Thread" + I + "الفردية GET" + Total + "Left 0") ؛ }} // اختيار فهرس أكبر قيمة في نظام الصفيف. }لمزيد من المحتوى المثير ، يرجى النقر فوق "ملخص برنامج تعليمي Development Android WeChat" و "ملخص تعليمي Java WeChat Development".
ما سبق هي خوارزميات الظرف الأحمر العشوائي المختلفة التي تشاركها ، والتي توفر لك مجموعة متنوعة من الأفكار. آمل أن يكون من المفيد للجميع أن يتعلموا استخدام خوارزمية WeChat Random Red Envelope. آمل أيضًا أن تستمر في الانتباه إلى محتوى أكثر إثارة من Wulin.com.