String[] values = {"a","b","c","d","e","f","g","h","j","k","l","m","m","n","o","p","q","r","s","t","u","v","w","x","y","z"}; Random rand = new Random(); List<Integer> indexs = new ArrayList<Integer>(); for(int i = 0; i < values.length; i++){ int index = rand.nextInt(values.length); while(indexs.contains(index)){ index = rand.nextInt(values.length); } indexs.add(index); System.out.println("第 "+(index + 1) + "值=" + values[index]); } 这个能实现你的功能,数组长度和内容可以不限
不考虑nextInt的时间复杂度的话,是O(1)public class Test { public static int[] array = new int[]{1,2,3,4,5,6}; public static int borderRight = array.length;
public static int getNextArray() { int random = new java.util.Random().nextInt(borderRight--); int rtn = array[random]; array[random] = array[borderRight]; return rtn; }
public static void main(String[] args) {
for(int i = 0; i < array.length; i ++) { System.out.println(Test.getNextArray()); } } }
int[] nums = {1,2,3,4,5}; int length = nums.length;//取出一个数字后,将最后一个数字填充到空位置,数组长度减一 Random rand = new Random(); for(int i=0;i<nums.length;i++) { int index = rand.nextInt(length--);//长度减一 System.out.println(nums[index]);//打印取出的数字 nums[index]=nums[length];//将最后一位数字填充到空位置 }
Random rand = new Random();
List<Integer> indexs = new ArrayList<Integer>();
for(int i = 0; i < values.length; i++){
int index = rand.nextInt(values.length);
while(indexs.contains(index)){
index = rand.nextInt(values.length);
}
indexs.add(index);
System.out.println("第 "+(index + 1) + "值=" + values[index]);
}
这个能实现你的功能,数组长度和内容可以不限
public static int borderRight = array.length;
public static int getNextArray() {
int random = new java.util.Random().nextInt(borderRight--);
int rtn = array[random];
array[random] = array[borderRight];
return rtn;
}
public static void main(String[] args) {
for(int i = 0; i < array.length; i ++) {
System.out.println(Test.getNextArray());
}
}
}
int length = nums.length;//取出一个数字后,将最后一个数字填充到空位置,数组长度减一
Random rand = new Random();
for(int i=0;i<nums.length;i++) {
int index = rand.nextInt(length--);//长度减一
System.out.println(nums[index]);//打印取出的数字
nums[index]=nums[length];//将最后一位数字填充到空位置
}