
正文
彩票抽奖java代码 买彩票java编程
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
写一彩票程序,要求能随机产生并按照升序输出1-30之间的7个数,且其中任意两个数字不能重复,Java程序
import java.util.Arrays;
import java.util.Random;
public class random {
public static void main(String[] args) {
int[] numArray = new int[30];
//生成一个存放30个数字的数组
for(int i=0;inumArray.length;i++){
numArray[i]=i+1;
}
Random random = new Random();
int randomNum = numArray.length-1;
int[] array=new int[7];
for(int i=0;iarray.length;i++){
int index = random.nextInt(randomNum--);
array[i]= numArray[index];
int temp=numArray[index];
numArray[index]=numArray[randomNum];
numArray[randomNum]=temp;
}
Arrays.sort(array);
for(int i=0;iarray.length;i++){
System.out.print(array[i]+" ");
}
}
说下大致思路,就是先弄一个1-30的数组,然后随机去数组里面取数,取完一次以后把本次取的数据往数组尾部放,并把尾部没选过的数字放到中间来,然后缩小检索数组的范围(这样就不会选到选过的数字了)
相关问答
Q1: 用java编写一个彩票抽奖程序
我写给你,如果是本专业,以后要多多学习。JDK 1.6
import java.awt.GridLayout;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.Iterator;
import java.util.Random;
import java.util.Set;
import java.util.TreeSet;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextField;
public class LuckyDrawn {
private JFrame f = new JFrame("Lucky Drawn");
private JButton btn = new JButton("Drawn");
private JTextField result = new JTextField("Result");
private static final int MIN = 1;
private static final int MAX = 30;
private static final int RESULT_COUNT = 7;
public LuckyDrawn(){
f.add(btn);
f.add(result);
result.setEditable(false);
btn.addMouseListener(new MouseListener(){
public void mouseClicked(MouseEvent e) {
Random rand = new Random();
SetInteger set = new TreeSetInteger();
while(set.size() RESULT_COUNT){
set.add(new Integer(rand.nextInt(MAX)+ 1));
}
StringBuffer sb = new StringBuffer("Lucky numbers are: ");
for (Iterator iter = set.iterator(); iter.hasNext();) {
sb.append(((Integer) iter.next()).intValue()).append(", ");
}
result.setText(sb.substring(0, sb.length() - 2).toString());
f.pack();
}
public void mouseEntered(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}
public void mousePressed(MouseEvent e) {}
public void mouseReleased(MouseEvent e) {}
});
f.setLayout(new GridLayout(2, 1));
f.setVisible(true);
f.setLocation(500, 200);
f.pack();
f.validate();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new LuckyDrawn();
}
}
Q2: Java代码实现抽奖:从班级的学号中抽出一个一等奖,两个二等奖,三个三等奖
抽取问题, 重点是 同一个学号不能重复被抽取.
解决办法很多,
比如数组可以使用下标来标记,号码是否被使用,使用彩票抽奖java代码了就继续下一次抽取
也可以使用集合来抽取,把集合顺序打乱,然后随便抽几个就可以彩票抽奖java代码了
参考代码:数组法
import java.util.Random;
public class Test {
public static void main(String[] args) {
int stuNums=30;
int[] nums=new int[stuNums];//存储学号彩票抽奖java代码的数组
boolean[] flags=new boolean[stuNums];//标记,用于标记对应下标的学号是否已经被抽取过彩票抽奖java代码了
for (int i = 0; i stuNums; i++) {
nums[i]=i+1;//给学号赋值
}
Random r=new Random();
while(true){
int index = r.nextInt(stuNums);
if(!flags[index]){
System.out.println("A等:"+nums[index]);
flags[index]=true; //标记已经被使用过了
break;
}
}
for (int i = 0; i 2; i++) {
int index = r.nextInt(stuNums);
if(!flags[index]){
System.out.println("B等:"+nums[index]);
flags[index]=true;
}else{
i--;//如果已经被抽取过了 ,那么i建议,再次循环
}
}
for (int i = 0; i 3; i++) {
int index = r.nextInt(stuNums);
if(!flags[index]){
System.out.println("c等:"+nums[index]);
flags[index]=true;
}else{
i--;
}
}
}
}
集合法
import java.util.ArrayList;
import java.util.Collections;
public class Test2 {
public static void main(String[] args) {
int stuNums=20;
ArrayListInteger list=new ArrayListInteger();
for (int i = 0; i stuNums; i++) {
list.add(i+1);
}
System.out.println("有序"+list);
Collections.shuffle(list);//打乱顺序
System.out.println("乱序"+list);
System.out.println("A等"+list.get(0));
System.out.println("B等"+list.get(1));
System.out.println("B等"+list.get(2));
System.out.println("C等"+list.get(3));
System.out.println("C等"+list.get(4));
System.out.println("C等"+list.get(5));
}
}
Q3: java 福利彩票32选6 这段代码 能随机选出6个不重复的号码,但是 不能排除0;求大神指教,修改!
按你的逻辑,出现0有2种情况:
1、随机出g==0;可以用 an[i]=g+1; 解决。(另外rd.nextInt(n)的取值范围是0~n-1)
2、随机出以前相同的数字,但你的处理办法是不管了,直接continue,所以中间就空出一个数字未加到数组an中,默认等于0。可用 i--; 解决
找你的代码稍微改动即可:
for (int i = 0; i an.length; i++) {
g = rd.nextInt(n);
if (bl[g]) {
i--;
continue;
}
an[i] = g+1;
bl[g] = true;
}
彩票抽奖java代码的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于买彩票java编程、彩票抽奖java代码的信息别忘了在本站进行查找喔。






