創新互聯www.cdcxhl.cn八線動態BGP香港云服務器提供商,新人活動買多久送多久,劃算不套路!
創新互聯自2013年起,先為西充等服務建站,西充等地企業,進行企業商務咨詢服務。為西充企業網站制作PC+手機+微官網三網同步一站式服務解決您的所有建站問題。java簡單模擬微信搶紅包功能,本例發100元紅包,有10個人搶,為了盡可能的公平,每個人的紅包金額都要隨機(保證結果的不確定性,本例搶紅包的次序與紅包金額匹配也隨機),就是不能出現部分紅包偏大部分偏小的情況,在區間0~100上隨機生成9個節點,加0和100共11個節點按從小到大排序,各節點之間的差值就是紅包金額,保證了紅包金額之和等于100。
public static void main(String[] args) { // 發100元紅包,10人搶 // TODO Auto-generated method stub // 發紅包總金額100元 double S = 100; // 0-100之間9個節點,加首尾11個點賦值給數組a double[] a = new double[11]; // 第一個數是0 a[0] = 0; // 最后一個數是100 a[a.length - 1] = S; // 生成9個數隨機節點并保留兩位小數 for (int m = 1; m < a.length - 1; m++) { a[m] = Double.valueOf(String.format("%.2f", S * Math.random())); } // 冒泡排序對9個點進行排序 for (int i = 1; i < a.length - 2; i++) { for (int j = 1; j < a.length - 1 - i; j++) { if (a[j] > a[j + 1]) { double temp; temp = a[j]; a[j] = a[j + 1]; a[j + 1] = temp; } } } //紅包金額賦值給數組aa double[] aa = new double[a.length - 1]; // 后一項減前一項的差值為紅包金額 for (int n = 0; n < a.length - 1; n++) { double mon = a[n + 1] - a[n]; //用自己的算法實現四舍五入保留兩位小數 int n1 = (int) (mon * 1000); int c = n1 % 10; if (c > 4) mon = (double) ((n1 + 10) / 10) / 100; else mon = (double) (n1 / 10) / 100; aa[n] = mon; } //列表打亂數組aa中的順序,實現搶紅包的次序與紅包金額匹配隨機 List<Double> list = new ArrayList<>(); for(int i = 0; i < aa.length; i++) { list.add(aa[i]); } Collections.shuffle(list); for(double i:list) System.out.println(i); }
當前文章:java模擬微信搶紅包的實例代碼-創新互聯
標題網址:http://vcdvsql.cn/article32/cdiepc.html
成都網站建設公司_創新互聯,為您提供網站制作、虛擬主機、ChatGPT、全網營銷推廣、網頁設計公司、網站設計
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯