青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

C#生成隨機(jī)數(shù)

blog1:
   我們?cè)谧瞿茏詣?dòng)生成試卷的考試系統(tǒng)時(shí),常常需要隨機(jī)生成一組不重復(fù)的題目,在.net Framework中提供了一個(gè)專門用來(lái)產(chǎn)生隨機(jī)數(shù)的類System.Random。
  對(duì)于隨機(jī)數(shù),大家都知道,計(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ī)程度已足夠了。偽隨機(jī)數(shù)的選 擇是從隨機(jī)種子開(kāi)始的,所以為了保證每次得到的偽隨機(jī)數(shù)都足夠地“隨機(jī)”,隨機(jī)種子的選擇就顯得非常重要。如果隨機(jī)種子一樣,那么同一個(gè)隨機(jī)數(shù)發(fā)生器產(chǎn)生 的隨機(jī)數(shù)也會(huì)一樣。一般地,我們使用同系統(tǒng)時(shí)間有關(guān)的參數(shù)作為隨機(jī)種子,這也是.net Framework中的隨機(jī)數(shù)發(fā)生器默認(rèn)采用的方法。
  我們可以使用兩種方式初始化一個(gè)隨機(jī)數(shù)發(fā)生器:
  第一種方法不指定隨機(jī)種子,系統(tǒng)自動(dòng)選取當(dāng)前時(shí)間作為隨機(jī)種子:
  Random ro new Random();
  第二種方法可以指定一個(gè)int型參數(shù)作為隨機(jī)種子:
  int iSeed=10;
  Random ro new Random(10);
  long tick DateTime.Now.Ticks;
  Random ran new Random((int)(tick 0xffffffffL) (int) (tick >> 32));
  這樣可以保證99%不是一樣。
  之后,我們就可以使用這個(gè)Random類的對(duì)象來(lái)產(chǎn)生隨機(jī)數(shù),這時(shí)候要用到Random.Next()方法。這個(gè)方法使用相當(dāng)靈活,你甚至可以指定產(chǎn)生的隨機(jī)數(shù)的上下限。
  不指定上下限的使用如下:
  int iResult;
  iResult=ro.Next();
  下面的代碼指定返回小于100的隨機(jī)數(shù):
  int iResult;
  int iUp=100;
  iResult=ro.Next(iUp);
  而下面這段代碼則指定返回值必須在50-100的范圍之內(nèi):
  int iResult;
  int iUp=100;
  int iDown=50;
  iResult=ro.Next(iDown,iUp);
  除了Random.Next()方法之外,Random類還提供了Random.NextDouble()方法產(chǎn)生一個(gè)范圍在0.0-1.0之間的隨機(jī)的雙精度浮點(diǎn)數(shù):
  double dResult;
  dResult=ro.NextDouble();
  但是用Random類生成題號(hào),會(huì)出現(xiàn)重復(fù),特別是在數(shù)量較小的題目中要生成不重復(fù)的的題目是很難的,參考了網(wǎng)上的一些方法,包括兩類,一類是通過(guò)隨機(jī)種子入手,使每一次的隨機(jī)種子不同,來(lái)保證不重復(fù);第二類是使用一些數(shù)據(jù)結(jié)構(gòu)和算法。下面主要就第二類介紹幾個(gè)方法。
   
    方法1:思想是用一個(gè)數(shù)組來(lái)保存索引號(hào),先隨機(jī)生成一個(gè)數(shù)組位置,然后把這個(gè)位置的索引號(hào)取出來(lái),并把最后一個(gè)索引號(hào)復(fù)制到當(dāng)前的數(shù)組位置,然后使隨機(jī) 數(shù)的上限減一,具體如:先把這100個(gè)數(shù)放在一個(gè)數(shù)組內(nèi),每次隨機(jī)取一個(gè)位置(第一次是1-100,第二次是1-99,...),將該位置的數(shù)用最后的數(shù) 代替。

   int[] index new int[15];
  for (int 0; 15; i++)
    index i;
  Random new Random();
  //用來(lái)保存隨機(jī)生成的不重復(fù)的10個(gè)數(shù)
  int[] result new int[10];
  int site 15;//設(shè)置下限
  int id;
  for (int 0; 10; j++)
  {
    id r.Next(1, site 1);
    //在隨機(jī)位置取出一個(gè)數(shù),保存到結(jié)果數(shù)組
    result[j] index[id];
    //最后一個(gè)數(shù)復(fù)制到當(dāng)前位置
    index[id] index[site 1];
    //位置的下限減少一
    site--;
  } 


  方法2:利用Hashtable。[NextPage]

   Hashtable hashtable new Hashtable();
  Random rm new Random();
  int RmNum 10;
  for (int 0; hashtable.Count RmNum; i++)
  {
      int nValue rm.Next(100);
      if (!hashtable.ContainsValue(nValue) && nValue != 0)
      {
       hashtable.Add(nValue, nValue);
       Console.WriteLine(nValue.ToString());
      }
  } 


  方法3:遞歸,用它來(lái)檢測(cè)生成的隨機(jī)數(shù)是否有重復(fù),如果取出來(lái)的數(shù)字和已取得的數(shù)字有重復(fù)就重新隨機(jī)獲取。

  Random ra=new Random(unchecked((int)DateTime.Now.Ticks));
  int[] arrNum=new int[10];
  int tmp=0;
  int minValue=1;
  int maxValue=10;
  for (int i=0;i<10;i++)
  {
    tmp=ra.Next(minValue,maxValue); //隨機(jī)取數(shù)
    arrNum=getNum(arrNum,tmp,minValue,maxValue,ra); //取出值賦到數(shù)組中
  }
  .........
  .........
  public int getNum(int[] arrNum,int tmp,int minValue,int maxValue,Random ra)
  {
    int n=0;
    while (n<=arrNum.Length-1)
    {
      if (arrNum[n]==tmp) //利用循環(huán)判斷是否有重復(fù)
      {
        tmp=ra.Next(minValue,maxValue); //重新隨機(jī)獲取。
        getNum(arrNum,tmp,minValue,maxValue,ra);//遞歸:如果取出來(lái)的數(shù)字和已取得的數(shù)字有重復(fù)就重新隨機(jī)獲取。
      }
    n++;
    }
    return tmp;
  } 
blog2:
 /// <summary>
  /// 功能描述:返回不重復(fù)隨機(jī)數(shù)數(shù)組
  /// 作者:    楊艷峰
  /// 創(chuàng)建日期:2006-4-30
  /// </summary>
  /// <param name="Num">隨機(jī)數(shù)個(gè)數(shù)</param>
  /// <param name="minNum">隨機(jī)數(shù)下限</param>
  /// <param name="maxNum">隨機(jī)數(shù)上限</param>
  /// <returns></returns>
  public int[] GetRandomArray(int Number,int minNum,int maxNum)
  {
   int j;
   int[] b=new int[Number];
   Random r=new Random();
   for(j=0;j<Number;j++)
   {
    int i=r.Next(minNum,maxNum+1);
    int num=0;
    for(int k=0;k<j;k++)
    {
     if(b[k]==i)
     {
      num=num+1;
     }
    }
    if(num==0 )
    {
     b[j]=i;
    }
    else
    {
     j=j-1;
    }
   }
   return b;
  }


blog3:

public static string GetRandomPassword(int length)
{
byte[] random = new Byte[length/2];
RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider();
rng.GetNonZeroBytes(random);

StringBuilder sb = new StringBuilder(length);
int i;
for (i = 0; i < random.Length; i++)
{
sb.Append(String.Format("{0:X2}",random[i]));
}
return sb.ToString();
}



blog4:
Random   newRandom=new   Random();  
  string   tempRandom="";  
  for(int   i=0;i<4;i++)  
        {  
          string   t=Convert.ToInt16(9*a.NextDouble()).ToString();  
         
          tempRandom+=t;  
       
        }

生成9位  
  Random   newRandom=new   Random();  
  string   tempRandom="";  
  for(int   i=0;i<9;i++)  
        {  
          string   t=Convert.ToInt16(9*a.NextDouble()).ToString();  
         
          tempRandom+=t;  
       
        }  
  隨機(jī)生成“0”或“1”字符  
   
  Random   newRandom=new   Random();  
  string   tempRandom="";  
  for(int   i=0;i<1;i++)  
        {  
          string   t=Convert.ToInt16(1*a.NextDouble()).ToString();  
         
          tempRandom+=t;  
       
        }   
   
更正.請(qǐng)把     Random   newRandom=new   Random();     換成       Random   a=new   Random();

public   string   GetRandom(int   length)  
  {  
  string   radstr   =   "";  
  Random   random   =   new   Random();  
  for   (int   i=0;i<length;i++)  
  {  
  int   a   =   random.Next(10);  
  radstr+=a.ToString();  
  }  
  return   radstr;  
  }

blog5:

C#生成隨機(jī)數(shù)小結(jié)

C#的Random類的實(shí)例方法Next可以生成一串偽隨機(jī)數(shù),Next有三個(gè)重載函數(shù):

程序代碼 程序代碼
public virtual int Next();
public virtual int Next(int maxValue);
public virtual int Next(int minValue, int maxValue);


1.public virtual int Next()
說(shuō)明:返回大于或等于零且小于 System.Int32.MaxValue 的 32 位帶符號(hào)整數(shù)。
程序代碼 程序代碼
Random rand = new Random();
Response.Write(rand.Next());

2.public virtual int Next(int maxValue)
說(shuō)明:返回大于或等于零且小于 maxValue 的 32 位帶符號(hào)整數(shù)。
程序代碼 程序代碼
Random rand = new Random();
Response.Write(rand.Next(100));

3.public virtual int Next(int minValue, int maxValue)
說(shuō)明:返回一個(gè)大于或等于 minValue 且小于 maxValue 的 32 位帶符號(hào)整數(shù)。
程序代碼 程序代碼
Random rand = new Random();
Response.Write(rand.Next(1000,2000));

和Random類相似的還有一個(gè)類Guid,可以用它的靜態(tài)方法NewGuid來(lái)返回一個(gè)全局唯一標(biāo)識(shí)符:

程序代碼 程序代碼
Response.Write(Guid.NewGuid().ToString());


blog6:

# regular
        /// <summary>
        /// 返回大于或等于零且小于 System.Int32.MaxValue 的 32 位帶符號(hào)整數(shù)。
        /// </summary>
        /// <returns></returns>
        public static void Next1()
        {
            Random rand = new Random();
            Console.WriteLine(rand.Next());
        }
        /// <summary>
        /// 返回大于或等于零且小于 maxValue 的 32 位帶符號(hào)整數(shù)
        /// </summary>
        /// <param name="maxValue"></param>
        /// <returns></returns>
        public static void Next2(int maxValue)
        {
            Random rand = new Random();
            Console.WriteLine(rand.Next(100));
        }
        /// <summary>
        /// 返回一個(gè)大于或等于 minValue 且小于 maxValue 的 32 位帶符號(hào)整數(shù)。
        /// </summary>
        /// <param name="minValue"></param>
        /// <param name="maxValue"></param>
        /// <returns></returns>
        public static void Next3(int minValue, int maxValue)
        {
            Random rand = new Random();
            Console.WriteLine(rand.Next(1000, 2000));
        }

/// <summary>
/// C#中隨機(jī)生成指定長(zhǎng)度的密碼
/// </summary>

private static string MakePassword(int pwdLength)
   {
    //聲明要返回的字符串
    string tmpstr = "";
    //密碼中包含的字符數(shù)組
    string pwdchars="abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    //數(shù)組索引隨機(jī)數(shù)
    int iRandNum;
    //隨機(jī)數(shù)生成器
    Random rnd = new Random();
    for(int i=0;i<pwdLength;i++)
    {
     //Random類的Next方法生成一個(gè)指定范圍的隨機(jī)數(shù)
     iRandNum = rnd.Next(pwdchars.Length);
     //tmpstr隨機(jī)添加一個(gè)字符
     tmpstr += pwdchars[iRandNum];
    }
    return tmpstr;
   }
#endregular




posted on 2008-10-20 21:58 Amigo 閱讀(7729) 評(píng)論(1)  編輯 收藏 引用

評(píng)論

# re: C#生成隨機(jī)數(shù)[未登錄](méi) 2011-08-26 15:34 Terry

方法1:思想 ....
.....
  int[] index = new int[15];
  for (int i = 0; i < 15; i++)
    index = i; <--- 這裡是什么意思, 好像不能通過(guò)編譯??
  回復(fù)  更多評(píng)論   


只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   Chat2DB   管理


<2009年2月>
25262728293031
1234567
891011121314
15161718192021
22232425262728
1234567

導(dǎo)航

統(tǒng)計(jì)

常用鏈接

留言簿(4)

隨筆檔案

搜索

積分與排名

最新評(píng)論

閱讀排行榜

評(píng)論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            久久久久久精| 亚洲黄页视频免费观看| 欧美日韩亚洲综合在线| 麻豆精品网站| 久久综合亚洲社区| 亚洲视频在线二区| 亚洲视频在线观看免费| 午夜精品一区二区在线观看| 性娇小13――14欧美| 免费亚洲一区二区| 女同性一区二区三区人了人一| 欧美激情一区二区久久久| 一区二区三区精品在线| 欧美中文字幕在线| 欧美国产日韩视频| 国产精品午夜在线| 99天天综合性| 欧美成人精品高清在线播放| 99在线热播精品免费| 欧美99久久| 国产亚洲精品久久久| 亚洲最新在线视频| 欧美成人伊人久久综合网| 亚洲欧美高清| 欧美午夜激情在线| 亚洲精品一二三| 欧美刺激午夜性久久久久久久| 一区二区毛片| 欧美精品亚洲二区| 9色porny自拍视频一区二区| 麻豆精品视频在线观看| 性欧美8khd高清极品| 国产精品一区二区你懂得| 亚洲黄色免费| 欧美激情精品久久久久久大尺度 | 香蕉久久国产| 国产精品盗摄一区二区三区| 在线看日韩欧美| 欧美视频在线免费看| 一区二区不卡在线视频 午夜欧美不卡在 | 美女成人午夜| 蜜臀av在线播放一区二区三区| 伊人久久亚洲热| 亚洲高清在线播放| 欧美日产在线观看| 久久国产精品亚洲77777| 久久精品国产999大香线蕉| 亚洲电影中文字幕| 亚洲精品一区在线观看| 国产麻豆日韩欧美久久| 欧美高清在线一区二区| 国产精品成人一区二区三区夜夜夜| 在线性视频日韩欧美| 亚洲综合视频在线| 亚洲理伦在线| 久久精品国产免费看久久精品| av成人免费观看| 欧美与黑人午夜性猛交久久久| 一区二区三区毛片| 久久综合色影院| 久久久亚洲精品一区二区三区| 欧美区视频在线观看| 开元免费观看欧美电视剧网站| 欧美性猛交一区二区三区精品| 欧美成人激情视频免费观看| 亚洲一二三区在线观看| 9l视频自拍蝌蚪9l视频成人| 久久久久国产精品www| 久久精品人人做人人爽电影蜜月| 欧美日韩裸体免费视频| 亚洲精品乱码久久久久久蜜桃麻豆| 免费永久网站黄欧美| 国内精品免费在线观看| 午夜欧美大尺度福利影院在线看 | 欧美精品不卡| 91久久久久久国产精品| av成人国产| 欧美日韩精品二区| 亚洲欧美国产精品va在线观看| 一区二区三区 在线观看视| 国产精品福利在线观看网址| 亚洲天堂激情| 欧美国产日韩精品| 午夜在线视频观看日韩17c| 国产精品色一区二区三区| 亚洲欧美日韩精品久久| 久久免费国产精品1| 在线成人黄色| 欧美日韩亚洲激情| 午夜在线精品| 99伊人成综合| 欧美大片在线观看| 亚洲欧美一区二区原创| 精品成人在线观看| 国产精品美女久久久久aⅴ国产馆| 久久不射网站| 亚洲综合电影一区二区三区| 亚洲承认在线| 亚洲在线免费视频| 亚洲人成免费| 在线观看国产欧美| 国产日韩欧美精品在线| 亚洲国产成人在线| 久久久久久网址| 欧美一级片在线播放| 在线一区二区三区做爰视频网站| 精品成人国产| 亚洲电影在线播放| 精品9999| 在线看无码的免费网站| 精品动漫3d一区二区三区| 国产日韩欧美精品| 黄色亚洲网站| 狠狠综合久久av一区二区小说| 国产日韩在线播放| 亚洲国产高清在线| 亚洲欧洲在线免费| 亚洲日韩视频| 9久re热视频在线精品| 欧美亚洲网站| 欧美88av| 99精品久久久| 久久激情视频免费观看| 麻豆亚洲精品| 国产欧美综合在线| 亚洲成人在线网| 亚洲一区二区三区777| 香蕉成人久久| 亚洲国语精品自产拍在线观看| 亚洲国产成人91精品| 制服丝袜激情欧洲亚洲| 久久欧美中文字幕| 国产精品久久久久久久久久免费| 国产一区二区三区网站| 99re在线精品| 欧美电影打屁股sp| 亚洲午夜一级| 欧美精品一区二区三区久久久竹菊| 国产精品福利在线观看| 亚洲精品日韩激情在线电影| 欧美伊人精品成人久久综合97| 久久综合中文| 久久精品亚洲| 国产一区二区三区最好精华液| 欧美二区乱c少妇| 欧美日韩999| 亚洲国产欧美不卡在线观看| 久久久久久成人| 亚洲一区二区三区乱码aⅴ| 欧美日韩国产一区| 尤物九九久久国产精品的分类| 亚洲男女自偷自拍| 亚洲一级在线| 国产精品久久久久久久久免费桃花| 99国产精品久久久久老师| 蜜桃伊人久久| 欧美成熟视频| 国产精品99久久久久久久久久久久| 欧美高清自拍一区| 欧美日韩你懂的| 欧美在线一二三四区| 久久精品免费| 99精品免费网| 午夜精品一区二区三区在线播放 | 一本久道久久综合中文字幕| 99国产精品| 韩国免费一区| 亚洲精品一级| 激情懂色av一区av二区av| 日韩午夜在线电影| 韩国av一区二区三区| 亚洲人午夜精品免费| 国产精品亚洲精品| 91久久在线观看| 国产一区二区无遮挡| 夜夜夜久久久| 亚洲精品资源美女情侣酒店| 久久久久国产精品www| 亚洲欧美一区二区激情| 欧美精品成人| 亚洲高清资源| 亚洲国产电影| 久久成人免费视频| 午夜免费在线观看精品视频| 欧美高清视频一二三区| 欧美成人精品福利| 91久久精品美女高潮| 免费成人小视频| 欧美亚洲综合在线| 国产精品久久久久毛片软件| 欧美国产一区在线| 亚洲激情国产| 男女av一区三区二区色多| 另类尿喷潮videofree| 在线日本成人| 久久久www成人免费无遮挡大片| 亚洲男人第一av网站| 国产欧美日韩专区发布| 久久久另类综合| 亚洲日本理论电影|