Однажды ночью несколько дней назад я вдруг подумал, что должен быть случайный алгоритм для WeChat Red Conventes, поэтому я попытался написать их сам, но я не знал, правильно ли это. Я посмотрел заявление онлайн. Казалось, что чиновник до сих пор не дал определенного алгоритма, поэтому мне пришлось сделать себя дураком здесь и сначала опубликовать код:
public static double [] getMoney (Double Money, int num) {random r = new random (); DecimalFormat format = new DecimalFormat (". ##"); Double Middle = double.parsedouble (format.format (money/num)); Double [] dou = new Double [num]; Double Redmoney = 0; Double NextMoney = деньги; двойная сумма = 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 <midne) {break; }} nextmoney = double.parsedouble (format.format (nextmoney - redmoney)); sum = sum + redmoney; Dou [index] = Redmoney; middle = double.parsedouble (format.format (nextmoney/(i-1))); index ++; }} return dou; }Вот основная идея: сначала рассчитайте среднее значение красной оболочки, а затем пропустите красную оболочку со случайным количеством красных конвертов меньше этого среднего значения. После того, как красная конверт отправлена, общая сумма красной оболочки должна быть соответствующим образом уменьшена. В то же время, пересчитывайте среднее значение: новая общая сумма % (исходное общее число красного огибала -1), до последней красной конверты, поместите всю оставшуюся сумму.
Спасибо за чтение, я надеюсь, что это поможет вам. Спасибо за поддержку этого сайта!