日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
淺談C#隨機(jī)數(shù)發(fā)生器

我們在做能自動(dòng)生成試卷的考試系統(tǒng)時(shí),常常需要隨機(jī)生成一組不重復(fù)的題目,在.net Framework中提供了一個(gè)專門用來產(chǎn)生隨機(jī)數(shù)的類System.Random。

對(duì)于隨機(jī)數(shù),大家都知道,計(jì)算機(jī)不 可能產(chǎn)生完全隨機(jī)的數(shù)字,所謂的C#隨機(jī)數(shù)發(fā)生器都是通過一定的算法對(duì)事先選定的隨機(jī)種子做復(fù)雜的運(yùn)算,用產(chǎn)生的結(jié)果來近似的模擬完全隨機(jī)數(shù),這種隨機(jī)數(shù)被稱 作偽隨機(jī)數(shù)。偽隨機(jī)數(shù)是以相同的概率從一組有限的數(shù)字中選取的。所選數(shù)字并不具有完全的隨機(jī)性,但是從實(shí)用的角度而言,其隨機(jī)程度已足夠了。偽隨機(jī)數(shù)的選 擇是從隨機(jī)種子開始的,所以為了保證每次得到的偽隨機(jī)數(shù)都足夠地“隨機(jī)”,隨機(jī)種子的選擇就顯得非常重要。如果隨機(jī)種子一樣,那么同一個(gè)C#隨機(jī)數(shù)發(fā)生器產(chǎn)生 的隨機(jī)數(shù)也會(huì)一樣。一般地,我們使用同系統(tǒng)時(shí)間有關(guān)的參數(shù)作為隨機(jī)種子,這也是.net Framework中的C#隨機(jī)數(shù)發(fā)生器默認(rèn)采用的方法。

我們可以使用兩種方式初始化一個(gè)C#隨機(jī)數(shù)發(fā)生器:

***種方法不指定隨機(jī)種子,系統(tǒng)自動(dòng)選取當(dāng)前時(shí)間作為隨機(jī)種子:

 
 
 
  1. Random ro = new Random(); 

第二種方法可以指定一個(gè)int型參數(shù)作為隨機(jī)種子:

 
 
 
  1. int iSeed=10;  
  2. Random ro = new Random(10);  
  3. long tick = DateTime.Now.Ticks;  
  4. Random ran = new Random((int)(tick & 0xffffffffL) | (int) (tick >> 32)); 

用它來檢測生成的隨機(jī)數(shù)是否有重復(fù),如果取出來的數(shù)字和已取得的數(shù)字有重復(fù)就重新隨機(jī)獲取。

 
 
 
  1. Random ra=new Random(unchecked((int)DateTime.Now.Ticks));  
  2. int[] arrNum=new int[10];  
  3. int tmp=0;  
  4. int minValue=1;  
  5. int maxValue=10;  
  6. for (int i=0;i<10;i++)  
  7. {  
  8. tmp=ra.Next(minValue,maxValue); //隨機(jī)取數(shù)  
  9. arrNum=getNum(arrNum,tmp,minValue,maxValue,ra); //取出值賦到數(shù)組中  
  10. }  
  11. .........  
  12. .........  
  13. public int getNum(int[] arrNum,int tmp,int minValue,int maxValue,Random ra)  
  14. {  
  15. int n=0;  
  16. while (n<=arrNum.Length-1)  
  17. {  
  18. if (arrNum[n]==tmp) //利用循環(huán)判斷是否有重復(fù)  
  19. {  
  20. tmp=ra.Next(minValue,maxValue); //重新隨機(jī)獲取。  
  21. getNum(arrNum,tmp,minValue,maxValue,ra);//遞歸:如果取出來的數(shù)字和已取得的數(shù)字有重復(fù)就重新隨機(jī)獲取。  
  22. }  
  23. n++;  
  24. }  
  25. return tmp;  

本文題目:淺談C#隨機(jī)數(shù)發(fā)生器
文章URL:http://www.5511xx.com/article/coehdgc.html