java.lang.Math.Random()與java.util.Random生成隨機(jī)數(shù)的區(qū)別

          一個(gè)是方法一個(gè)是對(duì)象之類的廢話就不說了。關(guān)鍵在與兩個(gè)生成隨機(jī)數(shù)的不同特征。
          因?yàn)樵谧鰣D像特征提取,對(duì)整個(gè)像素空間的逐個(gè)提取、識(shí)別顯然不太聰明,于是乎想起概率論上的一堆東東。
          取得一個(gè)可以反應(yīng)整個(gè)向量空間的隨機(jī)數(shù)集合,不失為明智的選擇。

          《Think in Java》里面經(jīng)常用那個(gè)對(duì)象弄,自然我首先想到了這個(gè)。同學(xué)則喜歡Math.Random,他認(rèn)為生成的是一個(gè)在區(qū)間均勻分布的符合要求的隨機(jī)數(shù)。以前從來沒想過“隨機(jī)”這個(gè)問題,到底是一個(gè)任意的數(shù)(各個(gè)概率一樣,就像古典概型里面,硬幣的正反一樣),還是一個(gè)在空間有均勻分布特征的呢?

          在網(wǎng)上搜羅了一大堆東西,發(fā)現(xiàn)說什么的都有,越來越迷糊。最后想起該看看權(quán)威的JDK API說明乎:

          random(注:java.lang.Math)
          public static double random()
          返回帶正號(hào)的 
          double 值,該值大于等于 0.0 且小于 1.0。返回值是一個(gè)偽隨機(jī)選擇的數(shù),在該范圍內(nèi)(近似)均勻分布。 
          第一次調(diào)用該方法時(shí),它將創(chuàng)建一個(gè)新的偽隨機(jī)數(shù)生成器,與以下表達(dá)式完全相同 

          new java.util.Random
          之后,新的偽隨機(jī)數(shù)生成器可用于此方法的所有調(diào)用,但不能用于其他地方。 
          此方法是完全同步的,可允許多個(gè)線程使用而不出現(xiàn)錯(cuò)誤。但是,如果許多線程需要以極高的速率生成偽隨機(jī)數(shù),那么這可能會(huì)減少每個(gè)線程對(duì)擁有自己偽隨機(jī)數(shù)生成器的爭(zhēng)用。 


          返回: 
          大于等于 
          0.0 且小于 1.0 的偽隨機(jī) double 值。 

          下面是java.util里面的

          java.util 
          類 Random
          java.lang.Object
            java.util.Random
          所有已實(shí)現(xiàn)的接口: 
          Serializable 
          直接已知子類: 
          SecureRandom 

          --------------------------------------------------------------------------------

          public class Randomextends Objectimplements Serializable此類的實(shí)例用于生成偽隨機(jī)數(shù)流。此類使用 48 位的種子,使用線性同余公式 (linear congruential form) 對(duì)其進(jìn)行了修改(請(qǐng)參閱 Donald Knuth 的The Art of Computer Programming, Volume 3,第 3.2.1 節(jié))。 

          如果用相同的種子創(chuàng)建兩個(gè) Random 實(shí)例,則對(duì)每個(gè)實(shí)例進(jìn)行相同的方法調(diào)用序列,它們將生成并返回相同的數(shù)字序列。為了保證此屬性的實(shí)現(xiàn),為類 Random 指定了特定的算法。為了 Java 代碼的完全可移植性,Java 實(shí)現(xiàn)必須讓類 Random 使用此處所示的所有算法。但是允許 Random 類的子類使用其他算法,只要其符合所有方法的常規(guī)協(xié)定即可。 

          Random 類實(shí)現(xiàn)的算法使用一個(gè) 
          protected 實(shí)用工具方法,每次調(diào)用它最多可提供 32 個(gè)偽隨機(jī)生成的位。 

          很多應(yīng)用程序會(huì)發(fā)現(xiàn) Math.random() 方法更易于使用。 


          看看下面的就更加顯而易見啦
          next
          protected int next(int bits)生成下一個(gè)偽隨機(jī)數(shù)。當(dāng)被所有其他方法使用時(shí),子類應(yīng)該重寫此方法。 
          next 的常規(guī)協(xié)定是,返回一個(gè) 
          int 值,如果參數(shù) bits 位處于 1 和 32(包括)之間,那么返回值的多數(shù)低位都將(大致)是單獨(dú)選擇的位值,每個(gè)位值是 0 或 1 的機(jī)會(huì)(大致)相等。通過將種子自動(dòng)更新為 

          (seed 
          * 0x5DEECE66DL + 0xBL& ((1L << 48- 1)并返回 
          (
          int)(seed >>> (48 - bits)),Random 類可實(shí)現(xiàn) next 方法。這是一個(gè)線性同余偽隨機(jī)數(shù)生成器,由 D. H. Lehmer 定義,Donald E. Knuth 在 The Art of Computer Programming, Volume 3: Seminumerical Algorithms 的第 3.2.1 節(jié)中進(jìn)行了描述。 

          參數(shù):
          bits 
          - 隨機(jī)位。 
          返回:
          隨機(jī)數(shù)生成器序列的下一個(gè)偽隨機(jī)值。

          于是我的結(jié)論如下:
          1:java.lang.Math.Random()這個(gè)靜態(tài)方法得到的是一個(gè)空間中有均勻分布特征的隨機(jī)數(shù)。
          2:java.util.Random,通過這個(gè)對(duì)象得到的則是“幾何分布”
          3:我的圖像特征應(yīng)該選擇第一個(gè)方法比較適當(dāng)。

          問題:我的似乎應(yīng)該說是一個(gè)抽樣問題更為恰當(dāng)。呼呼,先寫到這里


          啦啦啦,請(qǐng)高人指教。

          posted @ 2008-05-01 17:15 Jarod.cn.LuLuLife 閱讀(26713) | 評(píng)論 (3)編輯 收藏

          終于可以運(yùn)行了,發(fā)帖小慶祝一下。過段時(shí)間整理一下心得發(fā)出來。

          posted @ 2008-05-01 04:54 Jarod.cn.LuLuLife 閱讀(126) | 評(píng)論 (0)編輯 收藏

          JSF路上,又是小樹枝牽絆著我.

          盯著屏幕10個(gè)小時(shí)了,還是舉步維艱。

          搜到幾只Punk還有Rock的MP3,心情跟以前完全不一樣了唉。
          不過我的激蕩還是屬于這里的。

          睡覺前發(fā)現(xiàn)兩處好地方,明天繼續(xù)加油。
          (一個(gè)IBM,另一個(gè)sun的就不用說了)
          https://javaserverfaces.dev.java.net/users.html
          http://forum.java.sun.com/thread.jspa?threadID=703986&tstart=0
          http://www-128.ibm.com/developerworks/library/j-jsf2/#resources

          神哪,給我?guī)讉€(gè)優(yōu)秀的架構(gòu)學(xué)習(xí)學(xué)習(xí)吧。國內(nèi)幾個(gè)例子,其中包括不少老厚老厚的清華出版社弄出來的,實(shí)在不敢恭維。
          (音量調(diào)大大大大大,最好大到溢出)

          posted @ 2008-04-27 23:08 Jarod.cn.LuLuLife 閱讀(130) | 評(píng)論 (0)編輯 收藏

          畢業(yè)設(shè)計(jì),我的圖像搜索引擎哦

          終于完成了比較爛的圖像內(nèi)容識(shí)別部分。
          本來定好了是用JSF開發(fā)的,唉哦,從來沒用過的東西哦。沒準(zhǔn)備充分,現(xiàn)在又卡住了。

          “冬眠”我的數(shù)據(jù)庫實(shí)在是太方便了哦,哈哈哈哈哈哈哈。少寫了無數(shù)行代碼。

          繼續(xù)搜索文章中

          posted @ 2008-04-27 16:05 Jarod.cn.LuLuLife 閱讀(457) | 評(píng)論 (1)編輯 收藏

          Sun 要完全開源了。非常想看看他的圖形庫技術(shù)啊。

          posted @ 2008-04-24 23:58 Jarod.cn.LuLuLife 閱讀(221) | 評(píng)論 (0)編輯 收藏

          慶祝Blog開通了哦.

          慶祝我的blog開始啦,終于弄好了封面。
          是我白癡了,從來沒弄過blog。

          幸虧Blogjava的API(就是FaQ啦),寫得通俗易懂,而且還是中文的。

          posted @ 2008-04-24 16:00 Jarod.cn.LuLuLife 閱讀(97) | 評(píng)論 (0)編輯 收藏

          僅列出標(biāo)題
          共2頁: 上一頁 1 2 
          <2025年7月>
          293012345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          導(dǎo)航

          統(tǒng)計(jì)

          公告

          我的知識(shí)Blog!

          常用鏈接

          留言簿(3)

          隨筆檔案

          文章檔案

          Image

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 九龙城区| 莆田市| 龙门县| 黔南| 兴安盟| 丰顺县| 青河县| 揭西县| 贺州市| 沙河市| 闽侯县| 于都县| 贞丰县| 肇庆市| 高台县| 沙河市| 张掖市| 墨脱县| 冕宁县| 昭平县| 获嘉县| 繁峙县| 张掖市| 翁源县| 洪洞县| 高雄市| 南丰县| 隆化县| 沙坪坝区| 横峰县| 吉木萨尔县| 张家界市| 伊春市| 兴仁县| 东乡族自治县| 大新县| 班玛县| 临汾市| 尚志市| 庆元县| 台州市|