Java 抽奖

ajax无刷新调用抽奖程序:

PrintWriter out = null;
try {
response.setCharacterEncoding("UTF-8");//这种方法可以
out = response.getWriter();
StringBuilder outString = new StringBuilder();
Object result[] = award(prizeArr);//抽奖后返回ID和奖品信息
System.out.println("\t奖项ID:"+result[0]+"\t提示信息:"+result[1]);
//此处书写逻辑代码

outString.append(result[0]+","+result[1]);
out.print(outString);
} catch (IOException e) {
e.printStackTrace();
}finally{
if(out!=null){
out.flush();
out.close();
}
}

//抽奖并返回奖项
public Object[] award(Object[][] prizeArr){
//概率数组
Integer obj[] = new Integer[prizeArr.length];
for(int i=0;i<prizeArr.length;i++){
obj[i] = (Integer) prizeArr[i][2];
}
Integer prizeId = getRand(obj); //根据概率获取奖项id
String msg = "";
if(prizeId != null){
msg = (String) prizeArr[prizeId][1];//提示信息
return new Object[]{prizeId,msg};
}else{
msg = "您的抽奖次数已用尽!";
return new Object[]{"",msg};
}

}
//根据概率获取奖项
public Integer getRand(Integer obj[]){
Integer result = null;
try {
int sum = 0;//概率数组的总概率精度
for(int i=0;i<obj.length;i++){
sum+=obj[i];
}
for(int i=0;i<obj.length;i++){//概率数组循环
int randomNum = new Random().nextInt(sum);//随机生成1到sum的整数
if(randomNum<obj[i]){//中奖
result = i;
break;
}else{
sum -=obj[i];
}
}
} catch (Exception e) {
e.printStackTrace();
}
return result;
}

时间: 2024-09-29 02:12:07

Java 抽奖的相关文章

Java抽奖小程序

package com.test; import java.awt.Color; import java.awt.Font; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.Random; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import

Java 抽奖算法

1. 算法分析 根据概率将奖品划分区间,每个区间代表一个奖品,然后抽取随机数,反查落在那个区间上,即为所抽取的奖品. 2. 代码 核心算法 public class Arithmetic { // 放大倍数 private static final int mulriple = 1000000; public int pay(List<Prize> prizes) { int lastScope = 0; // 洗牌,打乱奖品次序 Collections.shuffle(prizes); Ma

java抽奖

package shisan; import java.util.Random; public class choujiang { public static void main(String[] args) { // TODO 自动生成的方法存根 Random o=new Random(); int []a=new int [7]; for (int i=1;i<7;i++) { a[i]=o.nextInt(36); for (int j=1;j<i;j++) { if(a[i]==a[j

java小项目之:抽奖系统!java初学者必备(内附源码)

[Java]Java摇奖源码,Java抽奖源码,Java随机抽奖源码 任务描述 本次任务要求为某商场开发一套幸运抽奖系统,客户必须首先注册成为该商场会员,会员登录成功后,就可以参加抽奖活动了.注册 用户选择“注册”菜单,进入注册界面.输入用户名和密码后,系统提示注册成功,并给出会员卡号.登录 注册成功后,用户选择“登录”菜单,进入登录界面.输入注册时的用户名和密码.登录成功,系统提示欢迎信息.如果用户和密码输入错误,提示用户继续输入,最多有3次机会.抽奖 登录成功后,用户选择“抽奖”菜单,进入幸

java小项目之:抽奖系统!java初学者必备!

[Java]Java摇奖源码,Java抽奖源码,Java随机抽奖源码任务描述 本次任务要求为某商场开发一套幸运抽奖系统,客户必须首先注册成为该商场会员,会员登录成功后,就可以参加抽奖活动了.注册 用户选择"注册"菜单,进入注册界面.输入用户名和密码后,系统提示注册成功,并给出会员卡号.登录 注册成功后,用户选择"登录"菜单,进入登录界面.输入注册时的用户名和密码.登录成功,系统提示欢迎信息.如果用户和密码输入错误,提示用户继续输入,最多有3次机会.抽奖 登录成功后,

【小型系统】抽奖系统-使用Java Swing完成

一.需求分析 1. 显示候选人照片和姓名. 2. 可以使用多种模式进行抽奖,包括一人单独抽奖.两人同时抽奖.三人同时抽奖. 3. 一个人可以在不同的批次的抽奖中获取一.二.三等奖,但是不能在同一批次抽奖中获取多个奖项. 二.系统总体框架 系统需求比较简单,采用Java Swing技术可以很好的实现,系统的总体类框架图如下 说明:基于主要的三个类就可以完成所需要的功能,Frame有Panel类型与MouseAdapter类型的成员,Panel主要用户存放具体的控件和绘制相应的信息,MouseAda

抽奖系统-使用Java Swing完成

一.需求分析 1. 显示候选人照片和姓名. 2. 可以使用多种模式进行抽奖,包括一人单独抽奖.两人同时抽奖.三人同时抽奖. 3. 一个人可以在不同的批次的抽奖中获取一.二.三等奖,但是不能在同一批次抽奖中获取多个奖项. 二.系统总体框架 系统需求比较简单,采用Java Swing技术可以很好的实现,系统的总体类框架图如下 说明:基于主要的三个类就可以完成所需要的功能,Frame有Panel类型与MouseAdapter类型的成员,Panel主要用户存放具体的控件和绘制相应的信息,MouseAda

java模拟一个抽奖程序

今天用一个程序模拟一个从1-32之间,随机抽取7组号码的抽奖程序 * 需要使用Java的图形界面知识 * 窗口  JFrame * 面板  JPanel * 显示文本信息的标签  JLabel * 文本框 JTextField * 按钮  JButton 还涉及到线程Thread 先看效果图: 但是这里留一个问题?就是去除重复数字(可以自己先实现,后期我会上传的) 下面看看代码,代码中有注释,不懂留言: package thread.test1; import java.awt.BorderLa

利用java实现抽奖转盘(着重安全控制)

本文是针对jquery 实现抽奖转盘作者的一个补充(主要用java去实现转盘结果生成及存储,解决jquery 做法 非法用户采用模拟器实现改变转盘值的风险性),针对jQuery的具体实现,请看案例:http://www.cnblogs.com/mofish/archive/2013/01/24/2875516.html              本文就不一一细说了,那么现在就直入正题. 由于公司产品推广,最近要求实现一个邀请用户注册即可抽奖的转盘,页面展示如下: java 实现方式如下: 构造实