1. 程式人生 > >使用Random物件生成n個[a,b]區間的隨機數

使用Random物件生成n個[a,b]區間的隨機數

最近在看一些排序演算法,為了方便模擬資料,就寫了一個方法用於生成指定個數,指定區間的 隨機數

package com.util;

import java.util.Arrays;
import java.util.Random;

/**
 * @author 文龍
 * @version 2017-12-24 上午7:50:23
 */
public class SortTestHelper {
	
	/**
	 * [3,7]
	 * @param n	生成的隨機個數
	 * @param rangel 生成的範圍 小的一個
	 * @param rangeR 生成的範圍 大 的一個
	 * @return 返回一個數組
	 */
	public static int[] generateRandomArray(int n, int rangel,int rangeR) {
		int[] a = new int[n];
		//埋下種子,注意相同種子的不同Random物件,每次產生的隨機數是一樣的
		Random random = new Random(System.currentTimeMillis());
		for(int i = 0; i < n; i++) {
			/**
			 * 比如[3,7]
			 * 呼叫.nextInt(rangeR)的取值範圍是[0,rangeR),不包含rangeR --> [0,7)
			 * 對其取模(rangeR - rangel + 1)後的取值是[0,rangeR - rangel]  --> [0,4]
			 * 到現在的取值範圍是[0,4],所以想要取值的範圍到[3,7],在原有基礎上加上3(7-3)即可
			 */
			a[i] = random.nextInt(rangeR) % (rangeR - rangel + 1) + rangel;
		}
		return a;
	}
	
	public static void main(String[] args) {
		int[] generateRandomArray = generateRandomArray(100, 3, 7);
		System.out.println(Arrays.toString(generateRandomArray));
	}
	
}