什么意思啊?产生1个? Random r=new Random(); int n=1+r.nextInt(52); 这个就是你要的吧。
最简单的办法int a = new int[52]; Random r = new Random(); for(int i=0;i<52;i++){ a[i] = i; } for(int i=0;i<52;i++){ int s1 = r.nextInt(); int s2 = r.nextInt(); if(s1 != s2){ int t = a[s1]; a[s1] = a[s2]; a[s2] = t; } }
import java.util.Arrays; import java.util.Random;/** * <code>RandomUtil</code> - Random Tool Class. * @author SageZk * @version 1.0 */ public class RandomUtil { private RandomUtil() {} private static Random rnd = null; /** * 初始化随机数发生器。 */ private static void initRnd() { if (rnd == null) rnd = new Random(); } /** * 计算并返回无重复值的以 <code>min</code> 为下限 <code>max</code> 为上限的随机整数数组。 * @param min 随机整数下限(包含) * @param max 随机整数上限(包含) * @param len 结果数组长度 * @return 结果数组 */ public static int[] getLotteryArray(int min, int max, int len) { //参数校验及性能优化 if (len < 0) return null; //长度小于 0 的数组不存在 if (len == 0) return new int[0]; //返回长度为 0 的数组 if (min > max) { //校正参数 min max int t = min; min = max; max = t; } final int LEN = max - min + 1; //种子个数 if (len > LEN) return null; //如果出现 35 选 36 的情况就返回 null //计算无重复值随机数组 initRnd(); //初始化随机数发生器 int[] seed = new int[LEN]; //种子数组 for (int i = 0, n = min; i < LEN;) seed[i++] = n++; //初始化种子数组 for (int i = 0, j = 0, t = 0; i < len; ++i) { j = rnd.nextInt(LEN - i) + i; t = seed[i]; seed[i] = seed[j]; seed[j] = t; } return Arrays.copyOf(seed, len); //注意:copyOf 需要 JRE1.6 } //Unit Testing public static void main(String[] args) { final int N = 10000; //测试次数 for (int i = 0; i < N; ++i) { int[] la = RandomUtil.getLotteryArray(1, 35, 7); if (la == null) continue; for (int v : la) System.out.printf("%0$02d ", v); System.out.println(); } }}
楼主【adrain_sengtang】截止到2008-07-11 10:31:12的历史汇总数据(不包括此帖):
发帖的总数量:6 发帖的总分数:180 每贴平均分数:30
回帖的总数量:10 得分贴总数量:0 回帖的得分率:0%
结贴的总数量:6 结贴的总分数:180
无满意结贴数:1 无满意结贴分:20
未结的帖子数:0 未结的总分数:0
结贴的百分比:100.00% 结分的百分比:100.00%
无满意结贴率:16.67 % 无满意结分率:11.11 %
敬礼!
Random r=new Random();
int n=1+r.nextInt(52);
这个就是你要的吧。
Random r = new Random();
for(int i=0;i<52;i++){
a[i] = i;
}
for(int i=0;i<52;i++){
int s1 = r.nextInt();
int s2 = r.nextInt();
if(s1 != s2){
int t = a[s1];
a[s1] = a[s2];
a[s2] = t;
}
}
import java.util.Random;/**
* <code>RandomUtil</code> - Random Tool Class.
* @author SageZk
* @version 1.0
*/
public class RandomUtil { private RandomUtil() {} private static Random rnd = null; /**
* 初始化随机数发生器。
*/
private static void initRnd() {
if (rnd == null) rnd = new Random();
} /**
* 计算并返回无重复值的以 <code>min</code> 为下限 <code>max</code> 为上限的随机整数数组。
* @param min 随机整数下限(包含)
* @param max 随机整数上限(包含)
* @param len 结果数组长度
* @return 结果数组
*/
public static int[] getLotteryArray(int min, int max, int len) {
//参数校验及性能优化
if (len < 0) return null; //长度小于 0 的数组不存在
if (len == 0) return new int[0]; //返回长度为 0 的数组
if (min > max) { //校正参数 min max
int t = min;
min = max;
max = t;
}
final int LEN = max - min + 1; //种子个数
if (len > LEN) return null; //如果出现 35 选 36 的情况就返回 null
//计算无重复值随机数组
initRnd(); //初始化随机数发生器
int[] seed = new int[LEN]; //种子数组
for (int i = 0, n = min; i < LEN;) seed[i++] = n++; //初始化种子数组
for (int i = 0, j = 0, t = 0; i < len; ++i) {
j = rnd.nextInt(LEN - i) + i;
t = seed[i];
seed[i] = seed[j];
seed[j] = t;
}
return Arrays.copyOf(seed, len); //注意:copyOf 需要 JRE1.6
} //Unit Testing
public static void main(String[] args) {
final int N = 10000; //测试次数
for (int i = 0; i < N; ++i) {
int[] la = RandomUtil.getLotteryArray(1, 35, 7);
if (la == null) continue;
for (int v : la) System.out.printf("%0$02d ", v);
System.out.println();
}
}}
package houlei.random;import java.util.NoSuchElementException;
import java.util.TreeSet;public class Random {
private int start,end;
private TreeSet buff=new TreeSet();
private java.util.Random rand = new java.util.Random();
/**
* 可以产生一个不重复的随机数.<br>
* 设置随机序列的范围,包含start和end
* @param start 随机序列的起始值(包含在随机序列内)
* @param end 随机序列的终止值(包含在随机序列内)
*/
public Random(int start,int end){
this.start=start;this.end=end;
}
/**
* 获得下一个不重复的随机数.
* @return 获得下一个不重复的随机数.
* @throws NoSuchElementException 当所有不重复的随机数都取完的时候,再调用该方法,抛出该异常.该异常是运行时异常.
*/
public int next(){
while(end-start+1>buff.size()){
int r = start+rand.nextInt(end-start+1);
if(buff.contains(Integer.valueOf(r))==false){
buff.add(Integer.valueOf(r));
return r;
}
}
throw new NoSuchElementException("所有随机序列已经取完.");
}
public static void main(String arg []){
Random rand = new Random(1,52);
for(int i=0;i<52;i++){
System.out.println(rand.next());
}
}
}