java模擬微信搶紅包的實例代碼-創(chuàng)新互聯(lián)

創(chuàng)新互聯(lián)www.cdcxhl.cn八線動態(tài)BGP香港云服務器提供商,新人活動買多久送多久,劃算不套路!

創(chuàng)新互聯(lián)自2013年起,先為西充等服務建站,西充等地企業(yè),進行企業(yè)商務咨詢服務。為西充企業(yè)網(wǎng)站制作PC+手機+微官網(wǎng)三網(wǎng)同步一站式服務解決您的所有建站問題。

java簡單模擬微信搶紅包功能,本例發(fā)100元紅包,有10個人搶,為了盡可能的公平,每個人的紅包金額都要隨機(保證結(jié)果的不確定性,本例搶紅包的次序與紅包金額匹配也隨機),就是不能出現(xiàn)部分紅包偏大部分偏小的情況,在區(qū)間0~100上隨機生成9個節(jié)點,加0和100共11個節(jié)點按從小到大排序,各節(jié)點之間的差值就是紅包金額,保證了紅包金額之和等于100。

public static void main(String[] args)
{
  // 發(fā)100元紅包,10人搶
  // TODO Auto-generated method stub
  // 發(fā)紅包總金額100元
  double S = 100;
  // 0-100之間9個節(jié)點,加首尾11個點賦值給數(shù)組a
  double[] a = new double[11];
  // 第一個數(shù)是0
  a[0] = 0;
  // 最后一個數(shù)是100
  a[a.length - 1] = S;
  // 生成9個數(shù)隨機節(jié)點并保留兩位小數(shù)
  for (int m = 1; m < a.length - 1; m++)
  {
    a[m] = Double.valueOf(String.format("%.2f", S * Math.random()));
  }
  // 冒泡排序?qū)?個點進行排序
  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;
      }
    }
  }
  //紅包金額賦值給數(shù)組aa
  double[] aa = new double[a.length - 1];
  // 后一項減前一項的差值為紅包金額
  for (int n = 0; n < a.length - 1; n++)
  {
    double mon = a[n + 1] - a[n];
    //用自己的算法實現(xiàn)四舍五入保留兩位小數(shù)
    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;
  }
  //列表打亂數(shù)組aa中的順序,實現(xiàn)搶紅包的次序與紅包金額匹配隨機
  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模擬微信搶紅包的實例代碼-創(chuàng)新互聯(lián)
標題網(wǎng)址:http://bm7419.com/article32/cdiepc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站制作、虛擬主機、ChatGPT、全網(wǎng)營銷推廣、網(wǎng)頁設(shè)計公司網(wǎng)站設(shè)計

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

小程序開發(fā)