亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

ASP.NET中隨機數生成及應用

2019-11-18 19:05:34
字體:
來源:轉載
供稿:網友

   摘  要  偽隨機數在計算機軟件設計中有很廣泛的用途。本文介紹了偽隨機數生成的一般原理,以及利用asp.net Framework中提供的Random類及其方法來生成各種不同范圍的滿足各種要求的隨機數。最后結合Web控件表單闡述了ASP.NET中的隨機數在軟件設計中的應用。

  關鍵詞  ASP.NET;偽隨機數生成;Web; Random類

    隨機數在軟件設計,尤其是在實踐環境模擬和測試等領域中得到很廣泛的應用。為追求真正的隨機序列,人們曾采用很多種原始的物理方法用于生成一定范圍內滿足精度(位數)的均勻分布序列,其缺點在于:速度慢、效率低、需占用大量存儲空間且不可重現等。為滿足計算機模擬研究的需求,人們轉而研究用算法生成模擬各種概率分布的偽隨機序列。偽隨機數是指用數學遞推公式所產生的隨機數。從實用的角度看,獲取這種數的最簡單和最自然的方法是利用計算機語言的函數庫提供的隨機數發生器。不同的開發環境提供的生成隨機數的函數和方法不一樣。典型情況下,它會輸出一個均勻分布在0和1區間內的偽隨機變量的值。

    隨機數發生器

  在計算機中產生隨機數的方法,經常采用下面的公式:

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

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

  下面是隨機數發生器的一個例子。其中,函數random_seed提供給用戶選擇隨機數的種子,當形式參數d=0時,取系統當前時間作為隨機數種子;當d≠0時,就選用d作為種子;函數random在給定種子的基礎上,計算新的種子,并產生一個范圍為low~high的新的隨機數。

#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中偽隨機數生成機制

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

  1、VB.NET內建函數

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

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

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

  2、隨機數類System.Random

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

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

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

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

  3、測試程序編寫

  在運行ASP.NET程序前必須建立其開發運行環境,包括配置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>

  其測試結果如圖1所示:



               圖1   偽隨機數測試運行結果

  實例開發

  應用程序需求分析:創建一個用于模擬擲骰子游戲的應用程序。此游戲中,游戲者將隨機滾動一個骰子。每一個骰子有六個面,分別代表1,2,3,4,5,6這六個點。當骰子停下以后,觀察骰子上表面的點數。如果擲得的點數為6,則提示贏的信息,否則將繼續投擲。

  1、關鍵技術

  1.1  Web控件表單

   Web控件表單具有高級語言的面向對象的特性,它是ASP.NET中System.Web.UI.WebControls命名空間的對象。其處理過程與HTML控件表單相似,有如下幾個特點:表單在服務器端運行;輸入域都是控件,具有強大且豐富的屬性和方法,輸入域的信息可以保留;具備對輸入域的驗證能力;包含有數據顯示控件等。

  一個典型的Web控件表單代碼如下:

  <asp: button id=”sub3”  text=”confirm” runat=”server”/>

  其中ASP:XXX指明是哪一類Web控件;ID屬性指明控件的標識名稱;Runat屬性的值為server,指明這是在服務器端運行的控件。

      本例中將用到的Web控件主要為按鈕控件。其中Image控件用于顯示圖像文件,有以下幾個屬性:Imageurl,指明圖像文件的URL;Width,圖像文件顯示的寬度;Height,圖像文件顯示的高度等。

  1.2  偽隨機數生成

       根據需求分析描述,為模擬隨機投擲骰子所得到的點數,需要隨機產生范圍在1~6之間的整數,此時可利用到System.Random類的Next(i,j)方法,這里i=1,j=7。(筆者編寫了一個測試程序發現如果j=6,所生成的隨機數在1~5之間)

  2、程序實現

  該程序的主要代碼實現如下:

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

sub disp(obj as object,e as eventargs)

dim r1 as random =new random()   //定義一個隨機數類

dim file_PRefix as string = "Images/die"

dim file_suffix as string = ".png"

value = r1.next(1,7)  //dim value as Integer

s1 = file_prefix + value.tostring() + file_suffix

pic1.imageurl = s1  //更新Image控件的imageurl屬性

if value = 6 then

     disp.text = "You win"  //顯示提示信息

else

     disp.text = "Try again"

end if

end sub

</script>

<form id="form1" runat="server"><br>

<asp:button id="disp" runat="server" onclick="disp" text="start"/>

<asp:image id="pic1" runat="server" width="50" height="50"/></form>

  程序的運行結果如圖2所示:


           圖2   程序運行結果

    結束語

      Web應用程序中有很多地方都要用到偽隨機數,如何選擇生成隨機序列的種子參數,以及選用何種隨機算法以期生成性能更佳的偽隨機序列是計算機軟件開發人員追求的目標之一。利用ASP.NET框架提供了偽隨機數生成類以及腳本語言VB.NET提供的函數方法可以生成各種滿足不同要求的隨機序列。如在Web系統中用于身份認證的隨機校驗碼就用到了隨機數生成的技術,這點在網站上有很多文章介紹,在此不再贅述。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品久久久久久久久影视| 久久视频在线视频| 深夜福利91大全| 欧美国产日韩xxxxx| 成人av资源在线播放| 久久天天躁狠狠躁夜夜爽蜜月| 欧美在线免费看| 中文字幕欧美亚洲| 5252色成人免费视频| 91精品久久久久久综合乱菊| 日韩av在线免费观看| 国产精品爱久久久久久久| 亚洲欧洲一区二区三区在线观看| 中文字幕亚洲欧美一区二区三区| 欧美黑人巨大xxx极品| 成人日韩在线电影| 国产午夜一区二区| 国产精品香蕉av| 亚洲日韩欧美视频一区| 日韩av在线免费播放| 亚洲视频在线视频| 欧美午夜宅男影院在线观看| 国产一区二区成人| 国产成人a亚洲精品| 91欧美精品午夜性色福利在线| 亚洲香蕉在线观看| 欧美亚洲成人精品| 国产日韩欧美在线| 欧美裸体xxxx极品少妇| 少妇高潮 亚洲精品| 国产精品99久久久久久久久久久久| 亚洲第一精品久久忘忧草社区| 亚洲电影免费观看高清完整版| 97成人精品区在线播放| 成人天堂噜噜噜| 国产精品视频精品视频| 久久午夜a级毛片| 日韩有码视频在线| 精品国产一区久久久| 亚洲石原莉奈一区二区在线观看| 尤物yw午夜国产精品视频明星| 91老司机精品视频| 欧美日韩中文字幕日韩欧美| 欧美高清视频免费观看| 亚洲精品欧美一区二区三区| 91视频-88av| 亚洲国产精品久久久久秋霞蜜臀| 精品一区二区三区四区| 中文字幕在线看视频国产欧美在线看完整| 亚洲天堂日韩电影| 久久久久久久一区二区三区| 欧美日韩另类字幕中文| 热re91久久精品国99热蜜臀| 欧美专区福利在线| 欧美日韩亚洲精品一区二区三区| 国产亚洲视频中文字幕视频| 久久在线免费观看视频| 国产精品高清在线| 91久久国产精品91久久性色| 亚洲国产成人在线视频| 亚洲电影中文字幕| 日韩视频精品在线| 久久中文精品视频| 欧美性资源免费| 日韩在线观看网站| 国产精品亚洲片夜色在线| 亚洲综合小说区| 成人网欧美在线视频| 欧美精品videosex极品1| 亚洲第一区在线观看| 精品中文字幕久久久久久| 国产精品日韩电影| 欧美黑人一区二区三区| 精品视频在线观看日韩| 国产在线a不卡| 亚洲高清免费观看高清完整版| 亚洲国产精品福利| 2023亚洲男人天堂| 欧美性猛交xxxx乱大交| 日韩专区在线观看| 国产精品第1页| 色老头一区二区三区在线观看| 日韩成人激情在线| 精品日本高清在线播放| 欧美成人精品h版在线观看| 自拍亚洲一区欧美另类| 国产一区二区三区在线观看视频| 欧美日韩综合视频网址| 91免费看视频.| 国产视频丨精品|在线观看| 中文在线资源观看视频网站免费不卡| 91社区国产高清| 成人黄色av免费在线观看| 亚洲国产三级网| 欧美激情国产精品| 欧美在线免费看| 精品国产拍在线观看| 欧美激情综合色| 亚洲二区在线播放视频| 日韩av在线网| 亚洲国产精品嫩草影院久久| 国产欧美日韩高清| 国产做受高潮69| 91免费福利视频| 成人欧美在线视频| 亚洲色图激情小说| www欧美日韩| 欧美一性一乱一交一视频| 欧美性猛交xxxxx免费看| 亚洲最大福利视频网| 精品美女久久久久久免费| 亚洲精品网址在线观看| 日本午夜在线亚洲.国产| 日韩在线视频观看正片免费网站| 2024亚洲男人天堂| 欧美孕妇性xx| 午夜精品久久久久久久久久久久久| 欧美亚洲另类在线| 亚洲一区二区黄| 久久久精品视频在线观看| 亚洲欧美国产精品| 日韩毛片在线观看| 久久久久久久国产| 国模视频一区二区| 欧美日韩一区二区在线播放| 久久精品国产一区二区电影| 中文字幕国产亚洲2019| 97超碰色婷婷| 日韩在线欧美在线国产在线| 日韩午夜在线视频| 俺去啦;欧美日韩| 日韩精品在线视频美女| 亚洲精品国精品久久99热| 国产精品高潮视频| 久久久中精品2020中文| 日韩成人性视频| 最近2019年日本中文免费字幕| 久久久久一本一区二区青青蜜月| 国内精品视频一区| 日韩在线播放一区| 亚洲视频在线免费看| 亚洲国产精品va在线观看黑人| 欧美xxxx14xxxxx性爽| 日本不卡高字幕在线2019| 最好看的2019年中文视频| 欧美极品在线播放| 国产精品视频不卡| 日韩精品极品视频免费观看| 欧美大成色www永久网站婷| 亚洲精品wwwww| 91视频国产高清| 欧美网站在线观看| 国产又爽又黄的激情精品视频| 久久久久国产精品www| 欧美精品免费在线观看| 国产日韩精品在线| 91地址最新发布| 欧美精品国产精品日韩精品| 久久夜色精品亚洲噜噜国产mv| 国产精品久久久久久久av大片| 精品国产鲁一鲁一区二区张丽| 欧美综合国产精品久久丁香| 97视频在线观看网址| 青草青草久热精品视频在线观看|