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

首頁 > 編程 > C# > 正文

c# 隨機函數的使用詳解

2020-01-24 03:13:13
字體:
來源:轉載
供稿:網友
復制代碼 代碼如下:

private static char[] constant =  
      {  
        '0','1','2','3','4','5','6','7','8','9', 
        'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z',  
        'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'  
      };
        public static string GenerateRandomNumber(int Length)
        {
            System.Text.StringBuilder newRandom = new System.Text.StringBuilder(62);
            Random rd = new Random();
            for (int i = 0; i < Length; i++)
            {
                newRandom.Append(constant[rd.Next(62)]);
            }
            return newRandom.ToString();
        }

隨機數的使用很普遍,可用它隨機顯示圖片,用它防止無聊的人在論壇灌水還可以用來加密信息等等。本文討論如何在一段數字區間內隨機生成若干個互不相同的隨機數,比如在從1到20間隨機生成6個互不相同的整數,并通過此文介紹Visual c#中隨機數的用法。

.net.Frameword中提供了一個專門產生隨機數的類System.Random,此類默認情況下已被導入,編程過程中可以直接使用。我們知道,計算機并不能產生完全隨機的數字,它生成的數字被稱為偽隨機數,它是以相同的概率從一組有限的數字中選取的,所選的數字并不具有完全的隨機性,但就實用而言,其隨機程度已經足夠了。
我們可以用以下兩種方法初始化一個隨機數發生器;
函數是這樣用,比如100至999的隨機數
復制代碼 代碼如下:

Random ran=new Random();
int RandKey=ran.Next(100,999);

不過這樣會有重復,可以給Random一個系統時間做為參數,以此產生隨機數,就不會重復了
第一種方法不指定隨機種子,系統自動選取當前時前作隨機種子:
復制代碼 代碼如下:

Random ra=new Random();

第二種方法是指定一個int型的參數作為隨機種子:
復制代碼 代碼如下:

int iSeed=6;
Random ra=new Random(iSeed);

下面我們要用到Random.Next()方法產生隨機數。
復制代碼 代碼如下:

ra.Next();

它返回一個大于或等于零而小于2,147,483,647的數,這并不滿足我們的需要,下面我們介紹它的重載函數和其它一些方法。
復制代碼 代碼如下:

publicvirtualint Next(int);用法:ra.next(20)

返回一個小于所指定最大值(此處為20)的正隨機數。
復制代碼 代碼如下:

publicvirtualint Next(int minValue, int maxValue);

用法:ra.next(1,20)
返回一個指定范圍內(此處為1-20之間)的隨機數,我們在下面的實例中會用到此函數。
類System.Random還有幾個方法分別是:
公共方法:
NextBytes用隨機數填充指定字節數組的元素。
NextDouble返回一個介于 0.0 和 1.0 之間的隨機數。
受保護的方法:
Sample返回一個介于 0.0 和 1.0 之間的隨機數,只允許子類對象訪問。
以上介紹了隨機數的基本用法,下面我們用一個實例來做更進一步的介紹。要在一段數字區間內隨機生成若干個互不相同的隨機數,比如在從1到20間隨機生成6個互不相同的整數。
主要是下面兩個函數getRandomNum與getNum:
復制代碼 代碼如下:

publicint[] getRandomNum(int num,int minValue,int maxValue)
{
Random ra=new Random(unchecked((int)DateTime.Now.Ticks));
int[] arrNum=newint[num];
int tmp=0;
for (int i=0;i<=num-1;i ){
tmp=ra.Next(minValue,maxValue); //隨機取數
arrNum[i]=getNum(arrNum,tmp,minValue,maxValue,ra); //取出值賦到數組中
}
return arrNum;
}

getRandomNum即是在區間[minValue,maxValue]取出num個互不相同的隨機數,返回的數組包含著結果。
其中隨機數是這樣創建的 Random ra=new Random(unchecked((int)DateTime.Now.Ticks));為什么不用Random ra=new Random();(系統自動選取當前時前作隨機種子)呢?

用系統時間做隨機種子并不保險,如果應用程序在一個較快的計算機上運行,則該計算機的系統時鐘可能沒有時間在此構造函數的調用之間進行更改,Random 的不同實例的種子值可能相同。這種情況下,我們就需要另外的算法來保證產生的數字的隨機性。所以為了保證產生的隨機數足夠"隨機",我們不得不使用復雜一點的方法來獲得隨機種子。在上面的這段程序中,我們首先使用系統時間作為隨機種子,然后將上一次產生的隨機數跟循環變量和一個與系統時間有關的整型參數相乘,以之作為隨機種子,從而得到了每次都不同的隨機種子,保證了產生足夠"隨機"的隨機數。

函數getNum是一遞歸,用它來檢測生成的隨機數是否有重復,如果取出來的數字和已取得的數字有重復就重新隨機獲取。值得注意的是要用一同一個隨機數實例生成,所以ra要作為參數傳入getNum中,否則生成的數字會有重復。
復制代碼 代碼如下:

publicint getNum(int[] arrNum,int tmp,int minValue,int maxValue,Random ra){
int n=0;
while (n<=arrNum.Length-1)
{
if (arrNum[n]==tmp) //利用循環判斷是否有重復
{
tmp=ra.Next(minValue,maxValue); //重新隨機獲取。
getNum(arrNum,tmp,minValue,maxValue,ra);//遞歸:如果取出來的數字和已取得的數字有重復就重新隨機獲取。
}

}
return tmp;
}

最后就是要顯示出來,當點擊一個button時取出的數字顯示在一個label中。
復制代碼 代碼如下:

privatevoid button1_Click(object sender, System.EventArgs e)
{
int[] arr=getRandomNum(6,1,20); //從1至20中取出6個互不相同的隨機數
int i=0;
string temp="";
while (i<=arr.Length-1){
temp =arr[i].ToString() "";
i ;
}
label1.Text=temp; //顯示在label1中
}

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲福利在线看| 91经典在线视频| 欧美精品18videosex性欧美| 欧美日韩免费在线| 国内精品久久久久久中文字幕| 亚洲精品午夜精品| 亚洲综合中文字幕在线| 97国产精品久久| 日本久久精品视频| 亚洲欧洲国产精品| 日韩中文字幕国产精品| 日韩av网址在线观看| 热久久免费视频精品| 精品无人区太爽高潮在线播放| 欧美极品少妇xxxxⅹ免费视频| 亚洲国产91色在线| 91日本视频在线| 伊人久久久久久久久久久久久| 欧美黑人性生活视频| 这里只有视频精品| 亚洲国产小视频在线观看| 欧美性xxxx在线播放| 欧美激情视频在线| 国产精品国产三级国产专播精品人| 精品成人在线视频| 日韩av三级在线观看| 精品国偷自产在线视频99| 日韩的一区二区| 亚洲人成网站999久久久综合| 九九久久综合网站| 丰满岳妇乱一区二区三区| 欧美视频专区一二在线观看| 97超级碰碰碰| 国产精品自拍网| 欧美综合在线观看| 国产亚洲在线播放| 久热精品视频在线免费观看| 亚洲精品乱码久久久久久金桔影视| 亚洲精品电影在线观看| 国产精品视频白浆免费视频| 色婷婷亚洲mv天堂mv在影片| 热re99久久精品国产66热| 丝袜情趣国产精品| 中文国产成人精品| 色综合导航网站| 亚洲国产高清自拍| 91精品国产777在线观看| 国产成人在线一区| 中文字幕精品在线视频| 在线视频欧美日韩精品| 国产日韩欧美影视| 日韩成人小视频| 亚洲性视频网站| 日韩精品在线免费观看| 亚洲人成电影网站色…| 精品人伦一区二区三区蜜桃免费| 国产精品嫩草影院一区二区| 精品国偷自产在线视频| 色偷偷噜噜噜亚洲男人的天堂| www.日韩.com| 欧美最顶级的aⅴ艳星| 亚洲精品美女久久| 欧美激情视频一区二区三区不卡| 精品网站999www| 国产97在线|日韩| 久久夜色撩人精品| 欧美人与性动交a欧美精品| 亚洲福利视频专区| 精品国产一区二区三区久久久| 国产精品xxx视频| 国产精品福利在线| 日韩在线视频网| 国产精品自产拍在线观看| 一本色道久久88亚洲综合88| 欧美在线免费视频| 91禁国产网站| 亚洲精品黄网在线观看| 亚洲色图色老头| 亚洲伊人久久综合| 久久伊人91精品综合网站| 亚洲欧美国产精品专区久久| 国产精品日日做人人爱| 国产精品久久精品| 亚洲男人7777| 国产精品自产拍高潮在线观看| 91国偷自产一区二区三区的观看方式| 亚洲免费小视频| 欧美国产亚洲精品久久久8v| 亚洲第一区中文99精品| 国产精品久久999| 日韩在线www| 久久免费观看视频| 97久久精品在线| 亚洲天堂网站在线观看视频| 久久精品欧美视频| xxxx欧美18另类的高清| 成人福利视频在线观看| 亚洲欧美日本伦理| 亚洲欧美激情精品一区二区| 国产精品免费一区| 欧美精品久久久久久久| 国产欧美日韩91| 亚洲激情电影中文字幕| 国产欧美va欧美va香蕉在线| 色综合色综合网色综合| 97在线视频免费播放| 亚洲一区二区三区sesese| 国产精品久久视频| 久久久国产精彩视频美女艺术照福利| 欧美激情综合色| 久久亚洲一区二区三区四区五区高| 日韩av在线不卡| 久久免费视频这里只有精品| 亚洲一区二区国产| 久久亚洲电影天堂| 久久精品欧美视频| 国产精品久久久久久久午夜| 欧洲永久精品大片ww免费漫画| www.久久草.com| 2019中文字幕免费视频| 欧美片一区二区三区| 青青青国产精品一区二区| 青青在线视频一区二区三区| 国产精品久久久久久久av大片| 夜夜躁日日躁狠狠久久88av| 国产视频精品xxxx| 日韩av免费网站| 日韩午夜在线视频| 国产视频在线一区二区| 国产日韩欧美黄色| 成人日韩在线电影| 精品无人区太爽高潮在线播放| 色综合视频一区中文字幕| 亚洲精品一区二区三区婷婷月| 欧美国产欧美亚洲国产日韩mv天天看完整| 欧美性猛交xxxx乱大交| 亚洲成人av片| 久久久久国产精品免费| 日韩国产欧美精品一区二区三区| 亚洲综合在线播放| 91av在线播放视频| 欧美性色视频在线| 国产成人精品一区二区在线| 精品日韩视频在线观看| 国产欧美va欧美va香蕉在| 欧美日在线观看| 亚洲成人黄色网址| 国产精品久久久久av免费| 亚洲欧美日韩天堂一区二区| 午夜精品一区二区三区在线播放| 中文国产亚洲喷潮| 国产精品69久久| 亚洲精品videossex少妇| 亚洲国产私拍精品国模在线观看| 国内精品在线一区| 日韩精品视频免费在线观看| 欧美性猛交xxxx黑人猛交| 中文字幕日韩精品在线| 亚洲影影院av| 亚洲精品wwwww| 亚洲老头同性xxxxx| 国产成人精品av在线| 国产精品激情自拍| 亚洲色图第一页|