方法一
/**
* 随机获取指定个随机数,且每个随机数之间不能重复
*/
public class Test {
static int RANDOM_MIN = 1; // 随机生成最小的数
static int RANDOM_MAX = 32; // 随机生成最大都数
static int RANDOM_SUMBER = 10; // 生成随机数的个数
public static void main(String[] args) {
// 声明数组准备存放随机数
int[] a = new int[RANDOM_SUMBER];
// 循环放入随机数
for (int i = 0; i < a.length; i++) {
/**
* 判断是否为第一位,如果是第一个位则直接放入随机数 如果不是则生成一个随机数去和数组已有的随机数进行比对
*
* - 有重复:生成一个新都随机数后,再执行上述操作
*
* - 无重复:将该值放入数组
*/
if (i == 0) {
a[i] = (int) (Math.random() * RANDOM_MAX + RANDOM_MIN);
} else {
int b = (int) (Math.random() * RANDOM_MAX + RANDOM_MIN);
for (int j = 0; j < a.length; j++) {
if (a[j] == b) {
b = (int) (Math.random() * RANDOM_MAX + RANDOM_MIN);
j = 0;
}
}
a[i] = b;
}
}
// 遍历输出
for (int i : a) {
System.out.println(i);
}
}
}
方法二
import java.util.Random;
import java.util.Vector;
/**
* 获取10个1-20之间的随机数,要求不能重复
*
* @author lgt
*
*/
public class Test {
public static void main(String[] args) {
// 创建一个产生随机数的对象
Random r = new Random();
// 创建一个存储随机数的集合
Vector<Integer> v = new Vector<Integer>();
// 定义一个统计变量
int count = 0;
while (count < 10) {
int number = r.nextInt(20) + 1;
// 判断number是否在集合中存在
if (!v.contains(number)) {
// 不在集合中,就添加
v.add(number);
count++;
}
}
// 遍历输出
for (int i : v) {
System.out.println(i);
}
}
}
参考资料
脚本之家 Java实现生成n个不重复的随机数
菜鸟教程 Java random() 方法