คืนหนึ่งเมื่อไม่กี่วันที่ผ่านมาฉันคิดว่าควรมีอัลกอริทึมแบบสุ่มสำหรับซองจดหมายสีแดง WeChat ดังนั้นฉันจึงพยายามเขียนพวกเขาด้วยตัวเอง แต่ฉันไม่รู้ว่ามันถูกต้องหรือไม่ ฉันดูคำสั่งออนไลน์ ดูเหมือนว่าเจ้าหน้าที่ยังไม่ได้ให้อัลกอริทึมที่ชัดเจนจนถึงตอนนี้ดังนั้นฉันจึงต้องทำตัวโง่ ๆ ที่นี่และโพสต์รหัสก่อน:
สาธารณะคงที่สองเท่า [] getMoney (เงินสองเท่า, int num) {สุ่ม r = new random (); decimalformat format = new DecimalFormat (". ##"); double middle = double.parsedouble (format.format (money/num)); double [] dou = ใหม่ double [num]; double redmoney = 0; สองครั้ง nextMoney = เงิน; ผลรวมสองเท่า = 0; ดัชนี int = 0; สำหรับ (int i = num; i> 0; i-) {ถ้า (i == 1) {dou [index] = nextMoney; } else {ในขณะที่ (จริง) {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; middle = double.parsedouble (format.format (nextMoney/(I-1))); ดัชนี ++; }} return Dou; -นี่คือแนวคิดพื้นฐาน: ก่อนคำนวณค่าเฉลี่ยของซองจดหมายสีแดงจากนั้นส่งซองจดหมายสีแดงด้วยจำนวนซองสีแดงที่มีขนาดเล็กกว่าค่าเฉลี่ยนี้ หลังจากส่งซองจดหมายสีแดงจำนวนซองจดหมายสีแดงทั้งหมดจะต้องลดลงตามลำดับ ในเวลาเดียวกันคำนวณค่าเฉลี่ยใหม่: จำนวนเงินรวมใหม่ % (หมายเลขซองจดหมายสีแดงรวมเดิม -1) จนกระทั่งซองจดหมายสีแดงล่าสุดใส่จำนวนเงินทั้งหมดที่เหลืออยู่ทั้งหมด
ขอบคุณสำหรับการอ่านฉันหวังว่ามันจะช่วยคุณได้ ขอบคุณสำหรับการสนับสนุนเว็บไซต์นี้!