要求: 在一定的範圍之內取出一定數量的隨機數。比如我要取出100以內的5個不重複的隨機數,主要的是不能重複,或者是取出5~100之間50個隨機數,但是不能重複
方法一:
思想:先把我要的隨機數範圍給遍歷出來放到一個數組當中,然後獲得隨機數,把這個隨機數作爲數組的索引,取出該數組中相對應的數字作爲隨機數放在一個新的專門存放隨機數的數組當中,
-----------------------------------------------------------------------------------------------------------------------------------------------------
/**
* param n 取出隨機數的個數
* param begin 隨機數產生的開始數
* param end 隨機數產生的終點
**/
public static int[] generateDifNums(int n, int begin, int end) {
int length = end - begin + 1;
int[] seed = new int[length];
for (int i = 0; i < length; i++) {
seed[i] = begin + i;
}
int[] ranArr = new int[n];
Random ran = new Random();
for (int i = 0; i < n; i++) {
int j = ran.nextInt(length - i);
ranArr[i] = seed[j];
seed[j] = seed[length - 1 - i];
}
return ranArr;
}
=============================================================================================
要求,取出1~100之內的5個完全不重複的隨機數
方法一:
隨機取0-100的5個數, 每取一個,就放到set中。直到set的size等於5就停止、
//hashset裏面不允許有重複的值,如果有重複的值,是插不進去的(不會覆蓋)
------------------------------------------------------------------------------------------------------
HashSet<Integer> hs = new HashSet<Integer>();
Random r = new Random();
while(hs.size()<5)
{
hs.add(r.nextInt(100));
}
方法二:
分5個不同區間,每個區間20個值,隨機取每個區間的一個值
方法三:
----------------------------------------------------------------------------------------------------------------------------------
import java.util.HashSet;
public class Test {
public static void main(String args[]) {
HashSet<Integer> hs = new HashSet<Integer>();
while (true) {
int a = (int)(Math.random() * 100);
if(a >= 10 && a <= 100) {
hs.add(a);
}
if (hs.size() == 5) {
break;
}
}
System.out.println(hs);
}
}