<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

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

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

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

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

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

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


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

    下面是java.util里面的

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

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

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

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

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

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


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

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

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

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

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


    啦啦啦,請高人指教。

    posted on 2008-05-01 17:15 Jarod.cn.LuLuLife 閱讀(26711) 評論(3)  編輯  收藏

    評論

    # re: java.lang.Math.Random()與java.util.Random生成隨機數(shù)的區(qū)別[未登錄] 2008-05-30 23:37 ZZ

    請問你能不能用C編寫一個生成正態(tài)分布隨機數(shù)的程序,而且是用中心極限定理和Box-Muller變換兩種方法產(chǎn)生的???
      回復(fù)  更多評論   

    # re: java.lang.Math.Random()與java.util.Random生成隨機數(shù)的區(qū)別 2008-05-31 01:07 Jarod.cn.LuLuLife


    1 : double _sta( double mu, double sigma) // 利用中心極限定理生成
    2 {
    3 int i;
    4 double r,sum = 0.0 ;
    5
    6 if (sigma <= 0.0 ) { printf( " Sigma<=0.0 in _sta! " ); exit( 1 ); }
    7 for (i = 1 ;i <= 12 ;i ++ )
    8 sum = sum + _random();
    9 r = (sum - 6.00 ) * sigma + mu;
    10
    11 return r;
    12
    13 }

    (網(wǎng)上很多吧,自己驗證哈,我也是搜來的。)  回復(fù)  更多評論   

    # re: java.lang.Math.Random()與java.util.Random生成隨機數(shù)的區(qū)別 2009-03-25 15:38 P.W

    贊一下鉆研的精神~  回復(fù)  更多評論   


    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導(dǎo)航:
     
    <2008年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    導(dǎo)航

    統(tǒng)計

    公告

    我的知識Blog!

    常用鏈接

    留言簿(3)

    隨筆檔案

    文章檔案

    Image

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲综合激情五月丁香六月| 亚洲AV日韩AV高潮无码专区| 亚洲六月丁香六月婷婷蜜芽| 99精品视频免费在线观看| 亚洲熟妇无码乱子AV电影| 久久99精品免费一区二区| 国产亚洲色婷婷久久99精品91| 一本到卡二卡三卡免费高| 亚洲第一永久AV网站久久精品男人的天堂AV | 78成人精品电影在线播放日韩精品电影一区亚洲 | 亚洲高清在线mv| 四虎免费影院ww4164h| 亚洲mv国产精品mv日本mv| 白白国产永久免费视频| 激情吃奶吻胸免费视频xxxx| 在线亚洲97se亚洲综合在线| 无码国产精品一区二区免费模式 | 亚洲人成无码久久电影网站| 久久国产免费观看精品| 亚洲乱码卡三乱码新区| 在线观看91精品国产不卡免费| 一边摸一边爽一边叫床免费视频| 亚洲人成色777777在线观看| 蜜桃视频在线观看免费视频网站WWW| 亚洲伊人久久精品| 四虎AV永久在线精品免费观看| 两个人日本WWW免费版 | 亚洲毛片基地日韩毛片基地| 四色在线精品免费观看| 一级毛片免费一级直接观看| 亚洲免费视频网站| 韩国二级毛片免费播放| 免费毛片在线看不用播放器| 亚洲AV无码专区在线亚| 四虎精品亚洲一区二区三区| 免费女人高潮流视频在线观看| 亚洲欧美日韩自偷自拍| 亚洲欧洲∨国产一区二区三区| 国产大片线上免费观看 | 亚洲欧美国产国产一区二区三区| 亚洲无码高清在线观看|