方法一
/**
* 隨機獲取指定個隨機數,且每個隨機數之間不能重復
*/
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() 方法