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

C#生成隨機數

blog1:
   我們在做能自動生成試卷的考試系統時,常常需要隨機生成一組不重復的題目,在.net Framework中提供了一個專門用來產生隨機數的類System.Random。
  對于隨機數,大家都知道,計算機不可能產生完全隨機的數字,所謂的隨機數發生器都是通過一定的算法對事先選定的隨機種子做復雜的運算,用產生的結果來近似的模擬完全隨機數,這種隨機數被稱 作偽隨機數。偽隨機數是以相同的概率從一組有限的數字中選取的。所選數字并不具有完全的隨機性,但是從實用的角度而言,其隨機程度已足夠了。偽隨機數的選 擇是從隨機種子開始的,所以為了保證每次得到的偽隨機數都足夠地“隨機”,隨機種子的選擇就顯得非常重要。如果隨機種子一樣,那么同一個隨機數發生器產生 的隨機數也會一樣。一般地,我們使用同系統時間有關的參數作為隨機種子,這也是.net Framework中的隨機數發生器默認采用的方法。
  我們可以使用兩種方式初始化一個隨機數發生器:
  第一種方法不指定隨機種子,系統自動選取當前時間作為隨機種子:
  Random ro new Random();
  第二種方法可以指定一個int型參數作為隨機種子:
  int iSeed=10;
  Random ro new Random(10);
  long tick DateTime.Now.Ticks;
  Random ran new Random((int)(tick 0xffffffffL) (int) (tick >> 32));
  這樣可以保證99%不是一樣。
  之后,我們就可以使用這個Random類的對象來產生隨機數,這時候要用到Random.Next()方法。這個方法使用相當靈活,你甚至可以指定產生的隨機數的上下限。
  不指定上下限的使用如下:
  int iResult;
  iResult=ro.Next();
  下面的代碼指定返回小于100的隨機數:
  int iResult;
  int iUp=100;
  iResult=ro.Next(iUp);
  而下面這段代碼則指定返回值必須在50-100的范圍之內:
  int iResult;
  int iUp=100;
  int iDown=50;
  iResult=ro.Next(iDown,iUp);
  除了Random.Next()方法之外,Random類還提供了Random.NextDouble()方法產生一個范圍在0.0-1.0之間的隨機的雙精度浮點數:
  double dResult;
  dResult=ro.NextDouble();
  但是用Random類生成題號,會出現重復,特別是在數量較小的題目中要生成不重復的的題目是很難的,參考了網上的一些方法,包括兩類,一類是通過隨機種子入手,使每一次的隨機種子不同,來保證不重復;第二類是使用一些數據結構和算法。下面主要就第二類介紹幾個方法。
   
    方法1:思想是用一個數組來保存索引號,先隨機生成一個數組位置,然后把這個位置的索引號取出來,并把最后一個索引號復制到當前的數組位置,然后使隨機 數的上限減一,具體如:先把這100個數放在一個數組內,每次隨機取一個位置(第一次是1-100,第二次是1-99,...),將該位置的數用最后的數 代替。

   int[] index new int[15];
  for (int 0; 15; i++)
    index i;
  Random new Random();
  //用來保存隨機生成的不重復的10個數
  int[] result new int[10];
  int site 15;//設置下限
  int id;
  for (int 0; 10; j++)
  {
    id r.Next(1, site 1);
    //在隨機位置取出一個數,保存到結果數組
    result[j] index[id];
    //最后一個數復制到當前位置
    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:遞歸,用它來檢測生成的隨機數是否有重復,如果取出來的數字和已取得的數字有重復就重新隨機獲取。

  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); //隨機取數
    arrNum=getNum(arrNum,tmp,minValue,maxValue,ra); //取出值賦到數組中
  }
  .........
  .........
  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) //利用循環判斷是否有重復
      {
        tmp=ra.Next(minValue,maxValue); //重新隨機獲取。
        getNum(arrNum,tmp,minValue,maxValue,ra);//遞歸:如果取出來的數字和已取得的數字有重復就重新隨機獲取。
      }
    n++;
    }
    return tmp;
  } 
blog2:
 /// <summary>
  /// 功能描述:返回不重復隨機數數組
  /// 作者:    楊艷峰
  /// 創建日期:2006-4-30
  /// </summary>
  /// <param name="Num">隨機數個數</param>
  /// <param name="minNum">隨機數下限</param>
  /// <param name="maxNum">隨機數上限</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;  
       
        }  
  隨機生成“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;  
       
        }   
   
更正.請把     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#生成隨機數小結

C#的Random類的實例方法Next可以生成一串偽隨機數,Next有三個重載函數:

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


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

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

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

和Random類相似的還有一個類Guid,可以用它的靜態方法NewGuid來返回一個全局唯一標識符:

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


blog6:

# regular
        /// <summary>
        /// 返回大于或等于零且小于 System.Int32.MaxValue 的 32 位帶符號整數。
        /// </summary>
        /// <returns></returns>
        public static void Next1()
        {
            Random rand = new Random();
            Console.WriteLine(rand.Next());
        }
        /// <summary>
        /// 返回大于或等于零且小于 maxValue 的 32 位帶符號整數
        /// </summary>
        /// <param name="maxValue"></param>
        /// <returns></returns>
        public static void Next2(int maxValue)
        {
            Random rand = new Random();
            Console.WriteLine(rand.Next(100));
        }
        /// <summary>
        /// 返回一個大于或等于 minValue 且小于 maxValue 的 32 位帶符號整數。
        /// </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#中隨機生成指定長度的密碼
/// </summary>

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




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

評論

# re: C#生成隨機數[未登錄] 2011-08-26 15:34 Terry

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


只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


<2025年11月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
30123456

導航

統計

常用鏈接

留言簿(4)

隨筆檔案

搜索

積分與排名

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            亚洲激情另类| 国产亚洲精品7777| 亚洲综合第一页| 亚洲午夜在线| 中文日韩在线视频| 亚洲欧美另类中文字幕| 性色av一区二区三区在线观看| 亚洲视频免费看| 亚洲一区二区视频| 久久精品一区二区| 欧美剧在线免费观看网站| 欧美日韩在线免费观看| 国产精品狠色婷| 国内精品模特av私拍在线观看| 亚洲国产精品成人综合| 在线一区观看| 久久久国产一区二区| 亚洲国产91精品在线观看| 亚洲精品乱码久久久久久蜜桃91| 亚洲视频欧美视频| 久久久综合网站| 欧美日韩中文在线观看| 伊人久久亚洲美女图片| aaa亚洲精品一二三区| 欧美亚洲专区| 亚洲国产精品成人综合| 午夜精品一区二区三区电影天堂| 久久婷婷影院| 国产精品一区视频| 日韩写真视频在线观看| 久久xxxx| 99热这里只有成人精品国产| 欧美一级夜夜爽| 欧美日韩三级一区二区| 亚洲国产精品久久久久秋霞影院 | 午夜精品久久一牛影视| 麻豆国产va免费精品高清在线| 欧美日韩视频在线第一区| 一区在线免费| 久久riav二区三区| 亚洲伦伦在线| 欧美粗暴jizz性欧美20| 国产综合精品一区| 午夜日韩福利| 99精品黄色片免费大全| 欧美88av| 在线日韩电影| 久久久国产精品一区二区中文 | 一二三区精品| 性刺激综合网| 久久综合久久综合这里只有精品| 国产精品久久久久久久久婷婷 | 国产私拍一区| 亚洲女爱视频在线| 日韩视频在线播放| 欧美激情亚洲| 亚洲精选在线观看| 欧美成在线观看| 美玉足脚交一区二区三区图片| 国产综合在线看| 久久免费99精品久久久久久| 亚洲欧美日韩在线不卡| 国产精品网红福利| 亚洲欧美综合v| 亚洲一级黄色| 国产精品自拍网站| 欧美在线视频一区| 欧美在线观看一二区| 国产一区二区三区观看| 另类酷文…触手系列精品集v1小说| 欧美专区在线| 一区二区三区在线视频播放| 美女黄网久久| 欧美日本韩国一区二区三区| 宅男精品视频| 亚洲一区二区三区精品在线| 国产伦精品一区二区三区免费迷 | 亚洲综合视频一区| 国产日韩欧美91| 美女成人午夜| 欧美日韩高清在线观看| 亚洲欧美久久| 久久久国产亚洲精品| 最新中文字幕一区二区三区| 亚洲精品乱码| 国产一区二区三区在线免费观看| 免费看成人av| 欧美日韩一区在线| 老牛国产精品一区的观看方式| 欧美顶级艳妇交换群宴| 亚洲专区欧美专区| 欧美一区二区三区四区在线观看地址 | 日韩一区二区精品在线观看| 99在线精品免费视频九九视| 国产日韩成人精品| 欧美黄色aa电影| 国产精品每日更新| 欧美二区在线| 亚洲综合色视频| 久久久亚洲精品一区二区三区| 亚洲国产精品一区二区www| 日韩午夜剧场| 亚洲第一视频| 亚洲欧美日韩国产成人| 91久久精品美女| 欧美亚洲免费在线| 99天天综合性| 久久久久久夜| 香蕉成人啪国产精品视频综合网| 老司机免费视频一区二区| 亚洲综合色激情五月| 免费看黄裸体一级大秀欧美| 亚洲欧美日韩精品久久亚洲区| 蜜桃久久av一区| 久久精品国产综合精品| 欧美日韩亚洲精品内裤| 欧美高清自拍一区| 国产亚洲精品aa午夜观看| 日韩视频在线一区| 日韩视频精品在线| 欧美91福利在线观看| 久久人人97超碰国产公开结果| 国产精品亚洲综合久久| 亚洲图片在线| 亚洲永久免费视频| 欧美日韩另类国产亚洲欧美一级| 欧美激情四色| 亚洲经典三级| 欧美成人资源网| 欧美国产高清| 亚洲国产裸拍裸体视频在线观看乱了中文| 午夜精品久久久久久久99樱桃| 亚洲一区高清| 国产精品欧美风情| 亚洲一区区二区| 午夜精彩视频在线观看不卡| 国产精品午夜国产小视频| 亚洲一区不卡| 欧美中日韩免费视频| 国产欧美一区二区三区国产幕精品| 亚洲视频狠狠| 久久精品中文| 伊大人香蕉综合8在线视| 久久久另类综合| 欧美mv日韩mv国产网站app| 在线精品一区二区| 欧美高潮视频| 9i看片成人免费高清| 亚洲在线免费| 国产视频在线观看一区| 久久嫩草精品久久久精品一| 欧美国产欧美亚洲国产日韩mv天天看完整 | 六月丁香综合| 亚洲人成人一区二区在线观看| 欧美jizzhd精品欧美巨大免费| 欧美黄色小视频| 在线中文字幕不卡| 欧美国产激情二区三区| 亚洲丶国产丶欧美一区二区三区| 久久最新视频| 亚洲精品国产系列| 亚洲欧美日韩国产成人| 国精产品99永久一区一区| 久久久精品国产一区二区三区| 欧美国产日韩亚洲一区| 亚洲综合成人婷婷小说| 国内成+人亚洲| 欧美精品一区二区三区在线播放| 一区二区三区日韩精品| 久久综合狠狠综合久久综合88| 亚洲人成亚洲人成在线观看| 国产精品大片免费观看| 久久久久久精| 99国产精品视频免费观看| 久久精品天堂| 一区二区激情| 狠狠狠色丁香婷婷综合久久五月 | 欧美1区免费| 午夜精品成人在线| 亚洲国产欧美另类丝袜| 欧美一区二区三区在| 亚洲人成精品久久久久| 国产欧美精品日韩区二区麻豆天美| 米奇777超碰欧美日韩亚洲| 亚洲中字黄色| 亚洲精品久久久久久久久久久久久 | 日韩视频第一页| 国产一区二区中文| 欧美日韩一区二区三区高清| 久久久噜噜噜久久久| 亚洲伊人色欲综合网| 亚洲日本中文字幕区| 久色婷婷小香蕉久久| 欧美综合激情网| 亚洲无亚洲人成网站77777| 亚洲国产专区| 国内成+人亚洲+欧美+综合在线| 国产精品高潮呻吟久久av黑人| 你懂的国产精品| 久久嫩草精品久久久精品|