public class Test { public static void main(String[] args) { //指定33个数的来源 int originalArr[] = new int[100]; ……//对originalArr设不重复值 int tmpArr1[] = getRandomArraay(originalArr, 33);//从来源中获取33个不重复数 int tmpArr2[] = getRandomArraay(tmpArr1, 7);//从33个数中获取7个不重复数 …… } public static int[] getRandomArraay(int[] originalArray, int number) { if (number > originalArray.length) return null; int[] result = new int[number]; int n = originalArray.length; for (int i = 0; i < number; i++) { int t = (int) (Math.random() * n); result[i] = originalArray[t]; originalArray[t] = originalArray[n - 1]; n--; } return result; } }
package csdn;import java.util.*;public class Rand33 { private static Random ran = new Random(); public static void main(String[] args) {
//存入整数一直到33个数为止 //在set中同样的数字不会重复添加 Set<Integer> set = new HashSet<Integer>(); while (set.size() != 33) { set.add(ran.nextInt(100));// 存入100以内的整数 } //打印出这个set里面存入的数 System.out.println(set); //把这个set存入arr数组中 Object[] arr = set.toArray(); //存下标的set Set<Integer> index = new HashSet<Integer>(); while (index.size() != 7) { index.add(ran.nextInt(set.size())); } //遍历下标即arr的下标并打印出所得到的7个不同数字 Iterator<Integer> it=index.iterator(); while(it.hasNext()){ System.out.println(arr[it.next()]); } } }
int[] arr = new int[33]; int[] result = new int[7]; Random ran = new Random(); for (int i = 0; i < 33; i++) { arr[i] = ran.nextInt(); } for (int i = 0; i < 7; i++) { int j = ran.nextInt() % 33; if (j < 0) { j = -j; } result[i] = arr[j]; System.out.println(result[i]); }
package com.csdn;import java.util.ArrayList; import java.util.List; import java.util.Random;/** * 请问随机选出33个不同的数,然后在这33个数里随机选出7个不同的数该如何做? * * @author xiaotang E-mail: [email protected] * @version1.00 创建时间:Mar 29, 2009 5:51:17 AM 类说明: */public class RondamT { public static List random(int n) { List list = new ArrayList(); Random r = new Random(); while (list.size() < n) { Integer i = Integer.valueOf(r.nextInt(n)+1);// if (!list.contains(i)) {// 判断重复 list.add(i);// 增加到list里 } } return list; } /** * @param args */ public static List random(int n, List list) { int k=33; List list1 = new ArrayList(); Random r = new Random(); while (list1.size() < n) { Integer i = Integer.valueOf(r.nextInt(k));//产生0到32随机数 if (!list1.contains(i)) {// 判断重复 list1.add(list.get(i.intValue()));//从list里取元素,下标是从0到32,增加到list1,主要在这里 } } return list1; } public static void main(String[] args) { // TODO Auto-generated method stub int n = 33, k = 7; List list = new ArrayList(); list = RondamT.random(n); System.out.println(list); list = RondamT.random(k, list); System.out.println(list); }}
public class doubleBall { /** * @param args */
static Random r = new Random(); static ArrayList List1 = new ArrayList(); static ArrayList List2 = new ArrayList(); static ArrayList List3 = new ArrayList();
public static void main(String[] args) { // TODO Auto-generated method stub
for (int j = 0; j < 33; j++) List1.add(j + 1); for (int i = 0; i < 16; i++) List2.add(i + 1); for (int k = 0; k < 6; k++) { int indexRed = r.nextInt(List1.size()); List3.add(List1.get(indexRed)); List1.remove(indexRed); } Collections.sort(List3);
for(int p=0;p<List3.size();p++){
System.out.print(List3.get(p)+";"); }
int indexBlue = r.nextInt(List2.size()); System.out.println("/" + List2.get(indexBlue));
}}
不是彩票吧,得看数的来源...public class RandomSet { private Set<Integer> seedSet = new HashSet<Integer>(); private Set<Integer> set = new HashSet<Integer>(); private Random ran = new Random(); RandomSet(int len,int seed) { while(seedSet.size() != len){ seedSet.add(ran.nextInt(seed)); }
public class Test { public static void main(String[] args) {
//指定33个数的来源
int originalArr[] = new int[100];
……//对originalArr设不重复值
int tmpArr1[] = getRandomArraay(originalArr, 33);//从来源中获取33个不重复数
int tmpArr2[] = getRandomArraay(tmpArr1, 7);//从33个数中获取7个不重复数
……
} public static int[] getRandomArraay(int[] originalArray, int number) {
if (number > originalArray.length)
return null;
int[] result = new int[number];
int n = originalArray.length;
for (int i = 0; i < number; i++) {
int t = (int) (Math.random() * n);
result[i] = originalArray[t];
originalArray[t] = originalArray[n - 1];
n--;
}
return result;
}
}
public class RandomNumber { /**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] a=maopao(randomNum());
for(int i=0;i<a.length;i++){
System.out.println(a[i]);
} }
public static int[] maopao(int[] a){
int temp;
for(int i=0;i<a.length;i++){
for(int j=a.length-2;j>=0;j--){
if(a[j]>=a[j+1]){
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
return a;
}
public static int[] randomNum(){
int[] a=new int[7];
a[0]=1+(int)(36*Math.random());
for(int i=1;i<a.length;i++){
boolean flag=true;
while(flag){
int temp=1+(int)(36*Math.random());
for(int j=0;j<i;j++){
if(a[j]==temp){
flag=true;break;
}
else {flag=false;}
}
if(flag==false)
{a[i]=temp;break;}
}
}
return a;
}}
有没有更简单的?
//存入整数一直到33个数为止
//在set中同样的数字不会重复添加
Set<Integer> set = new HashSet<Integer>();
while (set.size() != 33) {
set.add(ran.nextInt(100));// 存入100以内的整数
}
//打印出这个set里面存入的数
System.out.println(set);
//把这个set存入arr数组中
Object[] arr = set.toArray();
//存下标的set
Set<Integer> index = new HashSet<Integer>();
while (index.size() != 7) {
index.add(ran.nextInt(set.size()));
}
//遍历下标即arr的下标并打印出所得到的7个不同数字
Iterator<Integer> it=index.iterator();
while(it.hasNext()){
System.out.println(arr[it.next()]);
}
}
}
int[] result = new int[7];
Random ran = new Random();
for (int i = 0; i < 33; i++) {
arr[i] = ran.nextInt();
}
for (int i = 0; i < 7; i++) {
int j = ran.nextInt() % 33;
if (j < 0) {
j = -j;
}
result[i] = arr[j];
System.out.println(result[i]);
}
import java.util.List;
import java.util.Random;/**
* 请问随机选出33个不同的数,然后在这33个数里随机选出7个不同的数该如何做?
*
* @author xiaotang E-mail: [email protected]
* @version1.00 创建时间:Mar 29, 2009 5:51:17 AM 类说明:
*/public class RondamT { public static List random(int n) {
List list = new ArrayList();
Random r = new Random();
while (list.size() < n) {
Integer i = Integer.valueOf(r.nextInt(n)+1);//
if (!list.contains(i)) {// 判断重复
list.add(i);// 增加到list里
} }
return list; } /**
* @param args
*/
public static List random(int n, List list) {
int k=33;
List list1 = new ArrayList();
Random r = new Random();
while (list1.size() < n) {
Integer i = Integer.valueOf(r.nextInt(k));//产生0到32随机数
if (!list1.contains(i)) {// 判断重复
list1.add(list.get(i.intValue()));//从list里取元素,下标是从0到32,增加到list1,主要在这里
} } return list1; } public static void main(String[] args) {
// TODO Auto-generated method stub
int n = 33, k = 7;
List list = new ArrayList();
list = RondamT.random(n);
System.out.println(list);
list = RondamT.random(k, list);
System.out.println(list);
}}
public class doubleBall { /**
* @param args
*/
static Random r = new Random(); static ArrayList List1 = new ArrayList();
static ArrayList List2 = new ArrayList();
static ArrayList List3 = new ArrayList();
public static void main(String[] args) {
// TODO Auto-generated method stub
for (int j = 0; j < 33; j++)
List1.add(j + 1);
for (int i = 0; i < 16; i++) List2.add(i + 1);
for (int k = 0; k < 6; k++) {
int indexRed = r.nextInt(List1.size());
List3.add(List1.get(indexRed));
List1.remove(indexRed);
}
Collections.sort(List3);
for(int p=0;p<List3.size();p++){
System.out.print(List3.get(p)+";");
}
int indexBlue = r.nextInt(List2.size());
System.out.println("/" + List2.get(indexBlue));
}}
private Set<Integer> seedSet = new HashSet<Integer>();
private Set<Integer> set = new HashSet<Integer>();
private Random ran = new Random(); RandomSet(int len,int seed) {
while(seedSet.size() != len){
seedSet.add(ran.nextInt(seed));
}
Object[] arr = seedSet.toArray();
while(set.size() != 7){
set.add((Integer) arr[ran.nextInt(seedSet.size())]);
}
System.out.println(Arrays.toString(seedSet.toArray()));
System.out.println(Arrays.toString(set.toArray()));
}
public static void main(String[] args) {
new RandomSet(33,100);
}
}
public static void main(String[] args) {
// 福利彩票机选程序
// 1~33的随机7个不同的数
int a[] = new int[7];
a[0] = (int) (Math.random() * 33) + 1;
for (int i = 1; i < a.length;) {
int t = (int) (Math.random() * 29) + 1; // 1~29
boolean f = true;
for (int j = 0; j < i; j++) {
if (t == a[j]) {
f = false;
break;
}
}
if (f) {
a[i] = t;
i++;
}
}
// 排序
for (int j = 5; j >= 1; j--) {
for (int i = 0; i < j; i++) {
if (a[i] > a[i + 1]) {
int t = a[i];
a[i] = a[i + 1];
a[i + 1] = t;
}
}
}
// 结果显示
for (int i = 0; i < a.length - 1; i++) {
System.out.print(a[i] + "\t");
}
System.out.println("-- " + a[6]);
}
}