如何生成1到n不重复的随机数?

我的思路:先把1…n的生成放到一个a[n]的数组里面,然后随机打乱这个数组,是不是有点low哈哈,上代码

package chuangyeyilu;
 
import java.util.Random;
 
public class CreateRandomNumber {
 
	public static void main(String[] args) {
		randomNumber(100);// 随机生成1到100之间的不重复的数字
	}
 
	/**
	 * 打印生成相应的随机数
	 * 
	 * @param path
	 */
	public static void randomNumber(int num) {
		int[] arr = ranInt(num);
		for (int i = 0; i < arr.length; i++) {
			System.out.print(" " + arr[i]);
		}
	}
 
	/**
	 * 可以理解成先生成一个数组,然后打乱数组里各个元素在数组中的位置
	 * 
	 * @param n
	 * @return
	 */
	public static int[] ranInt(int n) {
		int[] arr = new int[n];
		int i, randomIndex, temp;
		for (i = 0; i < n; i++) { // 先生成一个a[n]的数组【1,2,3,4,5,6,7,8,9,...,n】
			arr[i] = i + 1;
		}
		for (i = 1; i < n; i++) { 
			randomIndex = ranArrIndex(i);
			temp = arr[i]; // 交换当前元素和生成的随机元素
			arr[i] = arr[randomIndex];
			arr[randomIndex] = temp;
		}
		return arr;
	}
 
	/**
	 * 返回一个大于等于0小于n的随机整数
	 * 
	 * @param end
	 * @return
	 */
	public static int ranArrIndex(int n) {
		Random r = new Random();
		return r.nextInt(n);
	}
}
打赏

作者:

操千曲而后晓声,观千剑而后识器

暂无关键词!