Мне нечего делать, и в последнее время мне нужно записать вход пользователя на домашнюю страницу, чтобы обнаружить Cash Red Conventes, и нет предела. Я только что рассчитал, как написать, если есть предел. Я думаю, что это похоже на WeChat Red Coventes. После выполнения требований проекта. Я случайно опубликовал алгоритм удаления красного конверта, который я написал сам. Я лично думаю, что этот алгоритм больше моделирует фактические правила захвата красного конверта. Скажи меньше ерунды. Сначала опубликовать код;
Импорт java.math.bigdecimal; import java.util.arraylist; import java.util.collections; import java.util.list; import java.util.random; public class testmain {public static void main (string [] args) {for (int i = 0; I <10; Математика (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 Номер численности людей* @return*/ public Static <BigDecimal> Math (BigDecimal MMMM, int Number) {if (mmm.doublevalue () <) <число* 0,01) {return null; } Случайный случайный = new random (); // деньги, 10 юаней рассчитывают по фракциям, равным 1000 баллов int money = mmmm.multiply (bigdecimal.valueof (100)). Intvalue (); // общее случайное число двойного количества = 0; // Каждый человек получает случайные точки двойные [] arrrandom = new Double [число]; // Каждый человек получает денежный список <bigdecimal> arrmoney = new Arraylist <BigDecimal> (номер); // количество людей, зацикленных по случайным точкам для (int i = 0; i <arrrandom.length; i ++) {int r = random.nextint ((номер) * 99)+1; count += r; arrrandom [i] = r; } // Рассчитайте сумму, полученную каждым человеком, открывая красную оболочку int c = 0; for (int i = 0; i <arrrandom.length; i ++) {// Складывать каждого человека, добавив случайные числа, чтобы вычислять процент каждого человека Double x = new Double (arrrandom [i] / count); // Каждый человек получает сумму, полученную каждым человеком по проценту int m = (int) math.floor (x * money); // Если получена 0, установите минимальное значение 1 цента if (m == 0) {m = 1; } // Рассчитайте общую сумму C += M; // если не последний человек, рассчитайте это обычно, если (i <arrrandom.length - 1) {arrmoney.add (новый BigDecimal (m) .divide (новый BigDecimal (100))); } else {// Если это последний человек, дайте оставшиеся деньги последнему человеку Arrmoney.Add (новый BigDecimal (Money - C + M) .divide (новый BigDecimal (100))); }} // Случайно нарушает сумму, полученную каждым лицом. вернуть Аррмони; }}Мыслительная логика этого набора кода:
1. Прежде всего, нам нужно разделить сумму красной конверты на N -акции в зависимости от количества людей, но из -за среднего значения. Если каждый человек забивает слишком равномерно, он будет казаться играбельным.
2. Во -вторых, как мы должны различать? Чтобы гарантировать, что красные конверты играют. На самом деле, я не думаю, что это имеет значение. В конце концов, красные конверты зависят только от удачи. Мне не повезло играть в WeChat Red Coventes за 20 юаней и 3 человека. Я также получил 0,01 юань. Параллелизм также будет очень большой. Таким образом, мой набор кодов просто выкладывает всех случайных чисел (диапазон случайных чисел - число людей * 100), добавьте случайные числа этих людей вместе и вычислите процент случайного числа каждого человека. Распределить дивиденды в соответствии с этим процентом.
Выше приведено в реализации Java простой алгоритм захвата красного конверта, представленный редактором (моделирование реального захвата красного конверта). Я надеюсь, что это будет полезно для всех. Если у вас есть какие -либо вопросы, пожалуйста, оставьте мне сообщение, и редактор ответит всем вовремя. Большое спасибо за вашу поддержку сайту wulin.com!