問題描述:生成一個長度為5的數組,該數組中包含[1,10]之間的數字,且每個數組中的元素都不重復。
實現思路:首先初始化一個長度為10的數組A,該數組中的數字依次為1~10,然后實現一個循環次數為5的循環,第一次生成一個[0,9]之間的隨機數作為數組下標,將該數字賦值到結果數組B中的第一個元素,并將A數組中隨機下標的元素和數組A中的第一個元素交換;有效數字減少1,;第二次生成一個[0,8]之間的隨機數字作為下標。將該數組值賦值到數組B中的第二個元素,依次類推。
注:Math.random()生成一個[0,1)之間的隨機小數
實現的代碼如下:
public class norand {

public static void main(String[] args) {
int [] a=new int[10]; //原始數據數組
int []b=new int[5]; //結果數據數組
int index; //隨機下標
int left=10; // 剩余元素個數
int temp; // 臨時數據
//初始化原始數組
for(int i=0;i<a.length;i++){
a[i]=i+1;
}
//隨機元素
for(int i=0;i<b.length;i++){
index=(int) (Math.random()*left); // 隨機下標
b[i]=a[index]; //存儲結果數據
//交換數據
temp=a[index];
a[index]=a[left-1];
a[left-1]=temp;
//有效數據減少1
left--;
}
//輸出結果
for(int i=0;i<b.length;i++){
System.out.println(b[i]);
}

}

}

實現思路:首先初始化一個長度為10的數組A,該數組中的數字依次為1~10,然后實現一個循環次數為5的循環,第一次生成一個[0,9]之間的隨機數作為數組下標,將該數字賦值到結果數組B中的第一個元素,并將A數組中隨機下標的元素和數組A中的第一個元素交換;有效數字減少1,;第二次生成一個[0,8]之間的隨機數字作為下標。將該數組值賦值到數組B中的第二個元素,依次類推。
注:Math.random()生成一個[0,1)之間的隨機小數
實現的代碼如下:
































