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

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

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

    302班

    java突擊隊
    posts - 151, comments - 74, trackbacks - 0, articles - 14
      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

    Asp.net中隨機數(shù)的生成

    Posted on 2007-07-08 01:29 停留的風(fēng) 閱讀(664) 評論(0)  編輯  收藏 所屬分類: .NET技巧特輯
    隨機數(shù)在軟件設(shè)計,尤其是在實踐環(huán)境模擬和測試等領(lǐng)域中得到很廣泛的應(yīng)用。為追求真正的隨機序列,人們曾采用很多種原始的物理方法用于生成一定范圍內(nèi)滿足精度(位數(shù))的均勻分布序列,其缺點在于:速度慢、效率低、需占用大量存儲空間且不可重現(xiàn)等。為滿足計算機模擬研究的需求,人們轉(zhuǎn)而研究用算法生成模擬各種概率分布的偽隨機序列。偽隨機數(shù)是指用數(shù)學(xué)遞推公式所產(chǎn)生的隨機數(shù)。從實用的角度看,獲取這種數(shù)的最簡單和最自然的方法是利用計算機語言的函數(shù)庫提供的隨機數(shù)發(fā)生器。不同的開發(fā)環(huán)境提供的生成隨機數(shù)的函數(shù)和方法不一樣。典型情況下,它會輸出一個均勻分布在0和1區(qū)間內(nèi)的偽隨機變量的值。

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

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





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

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

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

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

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

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

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

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

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

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

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

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

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

      3、測試程序編寫

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

    <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>


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



                   圖1   偽隨機數(shù)測試運行結(jié)果

    主站蜘蛛池模板: 福利免费观看午夜体检区| 免费人成在线观看播放国产| 亚洲综合国产成人丁香五月激情| 男人的好免费观看在线视频| 羞羞漫画在线成人漫画阅读免费| 亚洲色精品aⅴ一区区三区| 在线a免费观看最新网站| 久久亚洲中文字幕无码| 香蕉视频在线观看亚洲| 日韩视频免费在线| 久久国产乱子免费精品| 亚洲AV色无码乱码在线观看| 亚洲av鲁丝一区二区三区| 国内一级一级毛片a免费| 久久精品国产免费一区| 亚洲av成人片在线观看| 青青草原精品国产亚洲av| 又大又黄又粗又爽的免费视频| 18禁黄网站禁片免费观看不卡| 免费中文字幕视频| 亚洲成在人线中文字幕| 久久亚洲精品无码观看不卡| 黄瓜视频高清在线看免费下载| 中文字幕免费观看全部电影| 亚洲欧美熟妇综合久久久久| 337p日本欧洲亚洲大胆艺术| 亚洲成人高清在线| 免费理论片51人人看电影| 免费一级毛片在线播放视频| 特级一级毛片免费看| 久久精品国产亚洲av麻豆图片| 亚洲国产精品国自产电影| 亚洲乱码国产一区网址| 国产自产拍精品视频免费看| 久久国产免费福利永久| 久久伊人免费视频| a视频免费在线观看| 一区二区三区免费视频观看| 亚洲精品无码成人片久久不卡| 亚洲最新在线视频| 亚洲国产国产综合一区首页|