點擊查看:2015計算機等級考試二級Java入門教程章節(jié)匯總
點擊查看:2015計算機等級考試二級Java入門教程第十章匯總
10.9 生成隨機數(shù)
我們己經(jīng)使用了Random類,讓我們研究的更仔細些。Random類能使你創(chuàng)建多樣的互相獨立的隨機數(shù)發(fā)生器。這個類的每個對象是一個隨機數(shù)發(fā)生器,任何Random對象可以生成int、long、float或double類型的偽隨機數(shù)。通過一個算法使用一個"種子"和由此生長一系列數(shù)字來創(chuàng)建這些數(shù)。使用相同的種子對這個算法初始化會產(chǎn)生相同的序列,因為算法是確定性的。
生成的整數(shù)值被均勻地分布在整數(shù)類型的范圍內(nèi)L浮點數(shù)值被限定在兩種類型中0.0到l,0的范圍內(nèi)。你也可以用一個高斯(即均勻)分布生成double類型的數(shù),該分布的均值為0,0,標(biāo)準偏差為l,0這是一個典型的鐘形曲線代表許多隨機事件分布的可能性。
Random對象有兩個構(gòu)造函數(shù)。默認的構(gòu)造函數(shù)從你的計算機時鐘取得的當(dāng)前時間作種子值生成偽隨機數(shù)創(chuàng)建一個對象。另一個構(gòu)造函數(shù)接受一個long類型的自變量作種子。
Random lottery =new Random (); //Swquen not repeasable
Random repeatable=new Random (997L) //Repear\table sequence
你如果使用默認的構(gòu)造函數(shù),同一個程序每次運行生成的隨機數(shù)序列都會不同,要提防在同一個構(gòu)造函數(shù)中創(chuàng)建2個生成器。解決問題花費的時間是一毫秒,因此如果在前邊的語句中建立了兩個對象,通常這兩個對象會生成相同的序列,因為使用開始的種子值的次數(shù)是相同的。用同一種子創(chuàng)建的Random對象總產(chǎn)生相同的序列,當(dāng)你測試程序時對這一點非常重要測試一個輸出不重復(fù)的程序是一個挑戰(zhàn)尸Java中用一個給定的種子建立的隨機數(shù)生成器的一個主要特點是從一個給定的種子不僅總產(chǎn)生同一個偽隨機數(shù)序列,而且在不同計算機上也是這樣。
相關(guān)推薦:
2015計算機等級考試二級Java入門教程章節(jié)匯總
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |