JAVA生成隨機數(shù)并根據(jù)后臺概率靈活生成的實例代碼

最近碰到一個大轉(zhuǎn)盤的業(yè)務(wù),獎品可根據(jù)數(shù)據(jù)后臺靈活設(shè)置中獎概率,看起來挺簡單的業(yè)務(wù)功能,但實現(xiàn)起來對我這個毫無經(jīng)驗的人來說并不容易,后面又碰到一個根據(jù)后臺概率隨機獲取不同概率的檔位積分,前面是兩個實際中業(yè)務(wù)要用到的話不多說吧,直接上我寫概率工具類吧。

創(chuàng)新互聯(lián)網(wǎng)站建設(shè)由有經(jīng)驗的網(wǎng)站設(shè)計師、開發(fā)人員和項目經(jīng)理組成的專業(yè)建站團隊,負責(zé)網(wǎng)站視覺設(shè)計、用戶體驗優(yōu)化、交互設(shè)計和前端開發(fā)等方面的工作,以確保網(wǎng)站外觀精美、做網(wǎng)站、成都網(wǎng)站設(shè)計易于使用并且具有良好的響應(yīng)性。

1:第一種方法

/**
* 根據(jù)概率 獲取隨機積分
* 
* @param rdm
* @return
*/
    //這里的參數(shù)是一個存儲概率集合當(dāng)然你也可以用數(shù)組
public static Integer randomPoints(ArrayList<Double> rdm) {

   
ArrayList<Double> cdm = rdm;

//這里是將概率集合重組 比如 0.2 0.3 0.1 0.4 四個數(shù)據(jù)的集合 
for (int i = 1; i < cdm.size() - 1; i++) {
cdm.set(i, cdm.get(i) + cdm.get(i - 1));
}


cdm.set(cdm.size() - 1, 1.0);
//重組后 變成0.2 0.5 0.6 1.0  四個數(shù)據(jù)的集合
 double randomNumber; 
 randomNumber = Math.random();
//隨機生成一個0到1的隨機數(shù)
//接下就很簡單了你只要循環(huán)重組集合 如果隨機數(shù)小于那個值 就是返回 I 就好了 
for(int i=0;i<cdm.size();i++){

if(randomNumber<cdm.get(i)){

return i;
}


}

 return -1; // 正常情況之下不應(yīng)該到這一步的。因為cdf的最后一個概率應(yīng)該是1

}

2:第二種方法

這個是網(wǎng)上找到的 原理也是一樣 不過這里用法比較固定,但效率明顯比第一個更高

public class MathRandom 
{ 
 /** 
   * 0出現(xiàn)的概率為%50 
   */ 
 public static double rate0 = 0.50; 
 /** 
   * 1出現(xiàn)的概率為%20 
   */ 
 public static double rate1 = 0.20; 
 /** 
   * 2出現(xiàn)的概率為%15 
   */ 
 public static double rate2 = 0.15; 
 /** 
   * 3出現(xiàn)的概率為%10 
   */ 
 public static double rate3 = 0.10; 
 /** 
   * 4出現(xiàn)的概率為%4 
   */ 
 public static double rate4 = 0.04; 
 /** 
   * 5出現(xiàn)的概率為%1 
   */ 
 public static double rate5 = 0.01; 
 
 /** 
 * Math.random()產(chǎn)生一個double型的隨機數(shù),判斷一下 
 * 例如0出現(xiàn)的概率為%50,則介于0到0.50中間的返回0 
   * @return int 
   * 
   */ 
 private int PercentageRandom() 
 { 
 double randomNumber; 
 randomNumber = Math.random(); 
 if (randomNumber >= 0 && randomNumber <= rate0) 
 { 
  return 0; 
 } 
 else if (randomNumber >= rate0 && randomNumber <= rate0 + rate1) 
 { 
  return 1; 
 } 
 else if (randomNumber >= rate0 + rate1 
  && randomNumber <= rate0 + rate1 + rate2) 
 { 
  return 2; 
 } 
 else if (randomNumber >= rate0 + rate1 + rate2 
  && randomNumber <= rate0 + rate1 + rate2 + rate3) 
 { 
  return 3; 
 } 
 else if (randomNumber >= rate0 + rate1 + rate2 + rate3 
  && randomNumber <= rate0 + rate1 + rate2 + rate3 + rate4) 
 { 
  return 4; 
 } 
 else if (randomNumber >= rate0 + rate1 + rate2 + rate3 + rate4 
  && randomNumber <= rate0 + rate1 + rate2 + rate3 + rate4 
   + rate5) 
 { 
  return 5; 
 } 
 return -1; 
 } 
}

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)。

分享文章:JAVA生成隨機數(shù)并根據(jù)后臺概率靈活生成的實例代碼
文章來源:http://muchs.cn/article48/ipppep.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站維護、微信公眾號、網(wǎng)站收錄、網(wǎng)頁設(shè)計公司網(wǎng)站營銷、網(wǎng)站策劃

廣告

聲明:本網(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)

成都定制網(wǎng)站建設(shè)