【Java】Java搖獎源碼,Java抽獎源碼,Java隨機抽獎源碼
任務描述java
本次任務要求爲某商場開發一套幸運抽獎系統,客戶必須首先註冊成爲該商場會員,會員登陸成功後,就能夠參加抽獎活動了。
註冊數組
用戶選擇「註冊」菜單,進入註冊界面。輸入用戶名和密碼後,系統提示註冊成功,並給出會員卡號。
登陸dom
註冊成功後,用戶選擇「登陸」菜單,進入登陸界面。輸入註冊時的用戶名和密碼。登陸成功,系統提示歡迎信息。若是用戶和密碼輸入錯誤,提示用戶繼續輸入,最多有3次機會。
抽獎ide
登陸成功後,用戶選擇「抽獎」菜單,進入幸運抽獎界面。輸入會員卡號,系統生成5個4位隨機數做爲幸運數字。若是會員卡號是其中之一,則成爲本日幸運會員。
源代碼
import java.math.BigDecimal;import java.util.ArrayList;import java.util.List;
import com.thinkive.base.jdbc.DataRow;
public class TurnTable {學習
static Object[][] prizeArr = new Object[][]{ //裏面的指針轉動 {1,"一等獎",0.0001}, {2,"不要灰心",39.9994}, {3,"祝您好運",20.0}, {4,"二等獎",0.0002}, {5,"再接再礪",20.0}, {6,"運氣先攢着",10.0}, {7,"三等獎",0.0003}, {8,"謝謝參與",10.0} }; Object result[] = award(prizeArr);//抽獎後返回獎品等級及獎品描述 //抽獎後返回獎品等級及獎品描述 public static Object[] award(Object[][] prizeArr){ //機率數組 float obj[] = new float[prizeArr.length]; for(int i=0;i<prizeArr.length;i++){ obj[i] = Float.parseFloat(prizeArr[i][2].toString()); } Integer prizeId = getRand(obj); //根據機率獲取獎項號碼 String msg = (String) prizeArr[prizeId][1];//獎品信息 Integer prizeIds = prizeId +1; System.out.println("獎品號: "+prizeIds +" 獲獎等級:"+msg); return new Object[]{prizeId,msg}; } //根據機率獲取獎項 public static Integer getRand(float obj[]){ Integer result = null; try { float sum = 0.0f;//機率數組的總機率精度 float min = 0.0f;// for(int i=0;i<obj.length;i++){ BigDecimal beforSum = new BigDecimal(Float.toString(sum)); BigDecimal objValue = new BigDecimal(Float.toString(obj[i])); sum = beforSum.add(objValue).floatValue(); } for(int i=0;i<obj.length;i++){//機率數組循環 BigDecimal db = new BigDecimal(Math.random() * (sum - min) + min); BigDecimal b = new BigDecimal(Float.toString(obj[i])); if(compareMethod(db,b) == -1){//中獎 result = i; break; }else{ sum -=obj[i]; } } } catch (Exception e) { e.printStackTrace(); } /** * 獎品控制代碼,這裏能夠控制咱們的獎品的等級 * **/ return result; } public static void main(String[] args) { DataRow data = new DataRow();//此處DataRow爲封裝了的 HashMap List<DataRow> resultList = new ArrayList<DataRow>(); for (int i = 0; i < 10000; i++) { int k = 1; Object result[] = award(prizeArr);//抽獎後返回角度和獎品等級 String prize = ""; String comment = ""; for (Object object : result) { if(k==1){ prize = object.toString(); }else if(k==2){ comment = object.toString(); } k++; } if(k==3){ data.set("prize", Integer.valueOf(prize)+1); data.set("comment", comment); resultList.add(data); } } } public static int compareMethod(BigDecimal a,BigDecimal b){ return a.compareTo(b); }
}
喜歡這樣文章的能夠關注我,我會持續更新,大家的關注是我更新的動力!須要更多java學習資料的也能夠私信我!
祝關注個人人都:身體健康,財源廣進,福如東海,壽比南山,早生貴子,從不掉髮!指針