java 產生指定範圍的隨機數
阿新 • • 發佈:2019-01-11
問題,如何使用 java 產生 0~10,5~10 之間的隨機數?
Math.random()
Math.random() 可以產生一個 大於等於 0 且 小於 1 的雙精度偽隨機數,假設需要產生 ”0《= 隨機數 <=10” 的隨機數,可以這樣做:
int num =(int)(Math.random() * 11);
那如何產生 “5 <= 隨機數 <= 10” 的隨機數呢?
int num = 5 + (int)(Math.random() * 6);
生成 “min <= 隨機數 <= max ” 的隨機數
int num = min + (int)(Math.random() * (max -min+1));
java.util.Random
Random 是 java 提供的一個偽隨機數生成器。
生成 “ min <= 隨機數 <= max ” 的隨機數
import java.util.Random;
/**
* Returns a pseudo-random number between min and max, inclusive.
* The difference between min and max can be at most
* <code>Integer.MAX_VALUE - 1</code>.
*
* @param min Minimum value
* @param max Maximum value. Must be greater than min.
* @return Integer between min and max, inclusive.
* @see java.util.Random#nextInt(int)
*/
public static int randInt(int min, int max) {
// NOTE: Usually this should be a field rather than a method
// variable so that it is not re-seeded every call.
Random rand = new Random();
// nextInt is normally exclusive of the top value,
// so add 1 to make it inclusive
int randomNum = rand.nextInt((max - min) + 1) + min;
return randomNum;
}
標準庫
在實際使用中,沒有必要區重新寫一次這些隨機數的生成規則,可以藉助一些標準庫完成。如 commons-lang.
org.apache.commons.lang3.RandomUtils 提供瞭如下產生指定範圍的隨機數方法:
// 產生 start <= 隨機數 < end 的隨機整數
public static int nextInt(final int startInclusive, final int endExclusive);
// 產生 start <= 隨機數 < end 的隨機長整數
public static long nextLong(final long startInclusive, final long endExclusive);
// 產生 start <= 隨機數 < end 的隨機雙精度數
public static double nextDouble(final double startInclusive, final double endInclusive);
// 產生 start <= 隨機數 < end 的隨機浮點數
public static float nextFloat(final float startInclusive, final float endInclusive);
org.apache.commons.lang3.RandomStringUtils 提供了生成隨機字串的方法,簡單介紹一下:
// 生成指定個數的隨機數字串
public static String randomNumeric(final int count);
// 生成指定個數的隨機字母串
public static String randomAlphabetic(final int count);
// 生成指定個數的隨機字母數字串
public static String randomAlphanumeric(final int count);