Hace unos días, de repente pensé que debería haber un algoritmo aleatorio para los sobres rojos de WeChat, así que traté de escribirlos yo mismo, pero no sabía si era correcto. Miré la declaración en línea. Parecía que el funcionario no ha dado un algoritmo definitivo hasta ahora, así que tuve que hacer el ridículo aquí y publicar el código primero:
public static double [] getMoney (doble dinero, int num) {random r = new Random (); DecimalFormat format = new DecimalFormat (". ##"); double Middle = double.parsedOuble (format.format (dinero/num)); double [] dou = new Double [num]; Doble RedMoney = 0; Doble NextMoney = dinero; doble suma = 0; int index = 0; for (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)); suma = suma + RedMoney; Dou [índice] = RedMoney; medio = double índice ++; }} return dou; }Aquí está la idea básica: primero calcule el valor promedio del sobre rojo y luego pase un sobre rojo con un número aleatorio de sobres rojos más pequeños que este valor promedio. Después de que se envía el sobre rojo, la cantidad total del sobre rojo debe reducirse en consecuencia. Al mismo tiempo, vuelva a calcular el promedio: la nueva cantidad total % (envoltura roja total original número 1), hasta el último sobre rojo, coloca toda la cantidad restante.
Gracias por leer, espero que pueda ayudarte. ¡Gracias por su apoyo para este sitio!