真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

C++中怎么生成隨機(jī)數(shù)

這篇文章將為大家詳細(xì)講解有關(guān)C++中怎么生成隨機(jī)數(shù),文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。

網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)!專注于網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、小程序定制開發(fā)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了黎平免費(fèi)建站歡迎大家使用!

C++中常用rand()函數(shù)生成隨機(jī)數(shù),但嚴(yán)格意義上來講生成的只是偽隨機(jī)數(shù)(pseudo-random integral number)。生成隨機(jī)數(shù)時(shí)需要我們指定一個(gè)種子,如果在程序內(nèi)循環(huán),那么下一次生成隨機(jī)數(shù)時(shí)調(diào)用上一次的結(jié)果作為種子。但如果分兩次執(zhí)行程序,那么由于種子相同,生成的“隨機(jī)數(shù)”也是相同的。

在工程應(yīng)用時(shí),我們一般將系統(tǒng)當(dāng)前時(shí)間(Unix時(shí)間)作為種子,這樣C++產(chǎn)生隨機(jī)數(shù)更接近于實(shí)際意義上的隨機(jī)數(shù)。給一下例程如下:

  1. #include < iostream> 

  2. #include < ctime> 

  3. #include < cstdlib> 

  4. using namespace std;  

  5. int main()  

  6. {  

  7. double random(double,double);  

  8. srand(unsigned(time(0)));  

  9. for(int icnt = 0; icnt != 10; ++icnt)  

  10. cout < <  "No." < <  icnt+1 < <  ": " < <  
    int(random(0,10))< <  endl;  

  11. return 0;  

  12. }  

  13. double random(double start, double end)  

  14. {  

  15. return start+(end-start)*rand()/(RAND_MAX + 1.0);  

  16. }  

  17. /* 運(yùn)行結(jié)果  

  18. * No.1: 3  

  19. * No.2: 9  

  20. * No.3: 0  

  21. * No.4: 9  

  22. * No.5: 5  

  23. * No.6: 6  

  24. * No.7: 9  

  25. * No.8: 2  

  26. * No.9: 9  

  27. * No.10: 6  

  28. */ 

利用這種C++產(chǎn)生隨機(jī)數(shù)的方法能不能得到完全意義上的隨機(jī)數(shù)呢?似乎9有點(diǎn)多哦?卻沒有1,4,7?!我們來做一個(gè)概率實(shí)驗(yàn),生成1000萬個(gè)隨機(jī)數(shù),看0-9這10個(gè)數(shù)出現(xiàn)的頻率是不是大致相同的。程序如下:

  1. #include < iostream> 

  2. #include < ctime> 

  3. #include < cstdlib> 

  4. #include < iomanip> 

  5. using namespace std;  

  6. int main()  

  7. {  

  8. double random(double,double);  

  9. int a[10] = {0};  

  10. const int Gen_max = 10000000;  

  11. srand(unsigned(time(0)));  

  12. for(int icnt = 0; icnt != Gen_max; ++icnt)  

  13. switch(int(random(0,10)))  

  14. {  

  15. case 0: a[0]++; break;  

  16. case 1: a[1]++; break;  

  17. case 2: a[2]++; break;  

  18. case 3: a[3]++; break;  

  19. case 4: a[4]++; break;  

  20. case 5: a[5]++; break;  

  21. case 6: a[6]++; break;  

  22. case 7: a[7]++; break;  

  23. case 8: a[8]++; break;  

  24. case 9: a[9]++; break;  

  25. default: cerr < <  "Error!" < <  endl; exit(-1);  

  26. }  

  27. for(int icnt = 0; icnt != 10; ++icnt)  

  28. cout < <  icnt < <  ": " < <  setw(6) < <  
    setiosflags(ios::fixed) < <  setprecision(2) < <  
    double(a[icnt])/Gen_max*100 < <  "%" < <  endl;  

  29. return 0;  

  30. }  

  31. double random(double start, double end)  

  32. {  

  33. return start+(end-start)*rand()/(RAND_MAX + 1.0);  

  34. }  

  35. /* 運(yùn)行結(jié)果  

  36. * 0: 10.01%  

  37. * 1: 9.99%  

  38. * 2: 9.99%  

  39. * 3: 9.99%  

  40. * 4: 9.98%  

  41. * 5: 10.01%  

  42. * 6: 10.02%  

  43. * 7: 10.01%  

  44. * 8: 10.01%  

  45. * 9: 9.99%  

  46. */ 

關(guān)于C++中怎么生成隨機(jī)數(shù)就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。


分享標(biāo)題:C++中怎么生成隨機(jī)數(shù)
鏈接URL:http://weahome.cn/article/gjocdi.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部