在Java中我們可以使用java.util.Random類來產(chǎn)生一個(gè)隨機(jī)數(shù)發(fā)生器。它有兩種形式的構(gòu)造函數(shù),分別是Random()和Random(long seed)。Random()使用當(dāng)前時(shí)間即System.currentTimeMillis()作為發(fā)生器的種子,Random(long seed)使用指定的seed作為發(fā)生器的種子。
隨機(jī)數(shù)發(fā)生器即Random對象產(chǎn)生以后,可以通過對象調(diào)用不同的函數(shù):nextInt()、nextLong()、nextFloat()、nextDouble()等來獲得不同類型的隨機(jī)數(shù)。
如果2個(gè)Random對象使用相同的種子(比如都是100),并且以相同的順序調(diào)用相同的函數(shù),那么它們的返回值完全相同。如下面代碼中兩個(gè)Random對象的輸出完全相同:











































如果希望將返回的隨機(jī)數(shù)控制在某個(gè)范圍內(nèi)(比如0~99),則可以使用模數(shù)運(yùn)算符%。說明:將模數(shù)運(yùn)算符%作用于隨機(jī)數(shù)產(chǎn)生器所產(chǎn)生的隨機(jī)數(shù)身上,目的是為了讓隨機(jī)數(shù)的最大值局限于我們所制定的操作數(shù)數(shù)值減1范圍內(nèi)。如下面代碼就將輸入控制在0~99的范圍內(nèi),注意:如果不加Math.abs(),輸出范圍將是-99~99。

























...
* @param n the bound on the random number to be returned. Must be
* positive.
* @return a pseudorandom, uniformly distributed <tt>int</tt>
* value between 0 (inclusive) and n (exclusive).
* @exception IllegalArgumentException n is not positive.
* @since 1.2
*/
public int nextInt(int n) {
...