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

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

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

    302班

    java突擊隊(duì)
    posts - 151, comments - 74, trackbacks - 0, articles - 14
      BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理
    隨機(jī)數(shù)在軟件設(shè)計(jì),尤其是在實(shí)踐環(huán)境模擬和測(cè)試等領(lǐng)域中得到很廣泛的應(yīng)用。為追求真正的隨機(jī)序列,人們?cè)捎煤芏喾N原始的物理方法用于生成一定范圍內(nèi)滿足精度(位數(shù))的均勻分布序列,其缺點(diǎn)在于:速度慢、效率低、需占用大量存儲(chǔ)空間且不可重現(xiàn)等。為滿足計(jì)算機(jī)模擬研究的需求,人們轉(zhuǎn)而研究用算法生成模擬各種概率分布的偽隨機(jī)序列。偽隨機(jī)數(shù)是指用數(shù)學(xué)遞推公式所產(chǎn)生的隨機(jī)數(shù)。從實(shí)用的角度看,獲取這種數(shù)的最簡(jiǎn)單和最自然的方法是利用計(jì)算機(jī)語(yǔ)言的函數(shù)庫(kù)提供的隨機(jī)數(shù)發(fā)生器。不同的開(kāi)發(fā)環(huán)境提供的生成隨機(jī)數(shù)的函數(shù)和方法不一樣。典型情況下,它會(huì)輸出一個(gè)均勻分布在0和1區(qū)間內(nèi)的偽隨機(jī)變量的值。

        隨機(jī)數(shù)發(fā)生器

      在計(jì)算機(jī)中產(chǎn)生隨機(jī)數(shù)的方法,經(jīng)常采用下面的公式:





      用這個(gè)公式產(chǎn)生0~65536的隨機(jī)數(shù)a1,a2,…序列的程序,稱為232步長(zhǎng)的倍增諧和隨機(jī)數(shù)發(fā)生器。其中b、c、d為正整數(shù),d稱為由公式所產(chǎn)生的隨機(jī)序列的種子。

          由該公式可以看出,一旦參數(shù)b、c、d確定之后,所產(chǎn)生的隨機(jī)序列也是確定的。這種只在一定程度上滿足隨機(jī)性的序列稱為偽隨機(jī)數(shù)。

      下面是隨機(jī)數(shù)發(fā)生器的一個(gè)例子。其中,函數(shù)random_seed提供給用戶選擇隨機(jī)數(shù)的種子,當(dāng)形式參數(shù)d=0時(shí),取系統(tǒng)當(dāng)前時(shí)間作為隨機(jī)數(shù)種子;當(dāng)d≠0時(shí),就選用d作為種子;函數(shù)random在給定種子的基礎(chǔ)上,計(jì)算新的種子,并產(chǎn)生一個(gè)范圍為low~high的新的隨機(jī)數(shù)。

    #define  MULTIPLIER   0x015A4E35L
    #define  INCREMENT   1

    void  random_seed( unsigned long  d){
     if ( d == 0 )seed = time(0);
     else  seed = d;}
     unsigned  int random(unsigned long low,unsigned long high)
     {
          seed = MULTIPLIER * seed + INCREMENT;
          return ((seed >>16 )% ( high-low ) + low );
     }
    }

       ASP.NET中偽隨機(jī)數(shù)生成機(jī)制

      計(jì)算機(jī)不可能產(chǎn)生完全隨機(jī)的數(shù)字。所謂的隨機(jī)數(shù)發(fā)生器都是通過(guò)一定的算法對(duì)事先選定的隨機(jī)種子做復(fù)雜的運(yùn)算,用產(chǎn)生的結(jié)果來(lái)近似的模擬完全隨機(jī)數(shù),這種隨機(jī)數(shù)被稱作偽隨機(jī)數(shù)。偽隨機(jī)數(shù)是以相同的概率從一組有限的數(shù)字中選取的。所選數(shù)字并不具有完全的隨機(jī)性,但是從實(shí)用的角度而言,其隨機(jī)程度已足夠了。

      1、VB.NET內(nèi)建函數(shù)

           ASP.NET程序可以采用多種編程語(yǔ)言,其默認(rèn)的程序語(yǔ)言是VB.net,雖然VB.NET和VB有些相似,但它們的應(yīng)用環(huán)境不一樣,編寫(xiě)代碼的方法也有所不同。在VB.NET中,如果要使用數(shù)學(xué)函數(shù),必須通過(guò).NET Framework提供的Math類,它位于System命名空間下,用戶可以在代碼頂部添加Imports System. Math以便使用這些數(shù)學(xué)函數(shù)。

      其中用于產(chǎn)生隨機(jī)數(shù)的函數(shù)原型為:Rnd(x),該函數(shù)用以產(chǎn)生一個(gè)介于0~1之間的單精度隨機(jī)數(shù)。x是產(chǎn)生隨機(jī)數(shù)的種子。如果要從(min, max)這個(gè)范圍內(nèi)隨機(jī)抽取一個(gè)數(shù),此時(shí)需要用到公式:隨機(jī)數(shù) = (max - min) * Rnd(x) + min。

      偽隨機(jī)數(shù)的選擇是從隨機(jī)種子開(kāi)始的,為了保證每次得到的偽隨機(jī)數(shù)都足夠地“隨機(jī)”,隨機(jī)種子的選擇就顯得非常重要。如果選擇的隨機(jī)種子一樣則生成的隨機(jī)序列也相同。一般地,使用同系統(tǒng)時(shí)間有關(guān)的參數(shù)作為隨機(jī)種子,這也是.net Framework中的隨機(jī)數(shù)發(fā)生器默認(rèn)采用的方法。

      2、隨機(jī)數(shù)類System.Random

      隨機(jī)數(shù)類System.Random類提供以下方法用于產(chǎn)生各種滿足不同要求的隨機(jī)數(shù),如表1所示:

      表1    System.Random類提供的各種方法

    編號(hào)
    方法名稱
    功能描述
    1
    Next()
    返回一個(gè)0~2147483647之間的整數(shù)
    2
    Next(i)
    返回一個(gè)0~i之間的整數(shù)
    3
    Next(i,j)
    返回一個(gè)i~j之間的整數(shù)
    4
      Nextdouble()
    返回一個(gè)0~1之間的隨機(jī)小數(shù)
    5
     Nextdouble(  byte())
    用0~255之間的隨機(jī)整數(shù)作為字節(jié)數(shù)組各元素的值。

      使用隨機(jī)數(shù)類System.Random必須先聲明。如果要使用Nextbytes(byte())方法,在使用前也必須聲明字節(jié)數(shù)組。

      3、測(cè)試程序編寫(xiě)

      在運(yùn)行ASP.NET程序前必須建立其開(kāi)發(fā)運(yùn)行環(huán)境,包括配置Microsoft IIS和安裝.NET Framework SDK以及機(jī)MSE編輯器。MSE編輯器是Microsoft Office的一個(gè)附加軟件,作為ASP.NET的編輯工具非常方便。測(cè)試程序代碼如下:

    <script language="vb" runat="server">

    sub page_load(send as object,e as eventargs)
     dim r1 as random =new random()
     response.write("The result of r1.next()is:"+r1.next().tostring())
     response.write("Theresultofr1.next(100)is:" +r1.next(100).tostring())
     response.write("The result of r1.next(100,150) is:"+r1.next(100,150).tostring())
     response.write("The result of r1.nextdouble() is:"+r1.nextdouble().tostring())
     r1.nextbytes(r)  // dim r(300) as byte
     response.write("the r(100) is:")
     response.write(r(199))
     end sub </script>


      其測(cè)試結(jié)果如圖1所示:



                   圖1   偽隨機(jī)數(shù)測(cè)試運(yùn)行結(jié)果

    主站蜘蛛池模板: 亚洲国产精品成人久久| 亚洲乱码在线观看| 99久9在线|免费| 亚洲三级在线视频| 免费欧洲美女牲交视频| 在线涩涩免费观看国产精品 | 亚洲国产午夜电影在线入口| 男女啪啪永久免费观看网站| 国产一级一毛免费黄片| 精品日韩99亚洲的在线发布| 亚洲黄黄黄网站在线观看| 91大神免费观看| 国产精品亚洲综合久久| 亚洲中文字幕无码一久久区| 国产免费不卡v片在线观看| 免费一级做a爰片久久毛片潮| 亚洲影院在线观看| 免费大黄网站在线观| 暖暖免费在线中文日本| 亚洲AV无码AV吞精久久| 亚洲AV成人一区二区三区AV| 性做久久久久免费看| 在线成人爽a毛片免费软件| 野花视频在线官网免费1| 亚洲精品在线播放视频| 亚洲人妻av伦理| 一个人免费观看视频www| 成人网站免费看黄A站视频| 在线观看亚洲电影| 亚洲一卡2卡3卡4卡国产网站| 在线亚洲精品福利网址导航| 成人免费777777| 16女性下面扒开无遮挡免费| jizz免费在线影视观看网站| 亚洲熟妇无码八V在线播放| 亚洲电影国产一区| 精品亚洲一区二区三区在线观看| 毛片a级毛片免费观看免下载| 中文字幕免费在线观看| 花蝴蝶免费视频在线观看高清版| 精品免费AV一区二区三区|