【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学习资料的也能够私信我!
祝关注个人人都:身体健康,财源广进,福如东海,寿比南山,早生贵子,从不掉发!指针