1. 程式人生 > >java 產生指定範圍的隨機數

java 產生指定範圍的隨機數

問題,如何使用 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);