成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

C++產生隨機數具體實現方法詳解

開發 后端
C++產生隨機數的實現通常都是使用C++編程語言中的rand()函數來生成隨機數。不過在實際操作中還需要我們注意一些使用技巧的應用。

C++編程語言的應用,可以輕松的幫助開發人員實現各種功能需求,比如隨機數的生成等等。那么在這里我們就會給大家詳細介紹一下有關C++產生隨機數的具體方法,希望大家可以對此有一個詳細的了解。

C++中常用rand()函數生成隨機數,但嚴格意義上來講生成的只是偽隨機數(pseudo-random integral number)。生成隨機數時需要我們指定一個種子,如果在程序內循環,那么下一次生成隨機數時調用上一次的結果作為種子。但如果分兩次執行程序,那么由于種子相同,生成的“隨機數”也是相同的。

在工程應用時,我們一般將系統當前時間(Unix時間)作為種子,這樣C++產生隨機數更接近于實際意義上的隨機數。給一下例程如下:

  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. /* 運行結果  
  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++產生隨機數的方法能不能得到完全意義上的隨機數呢?似乎9有點多哦?卻沒有1,4,7?!我們來做一個概率實驗,生成1000萬個隨機數,看0-9這10個數出現的頻率是不是大致相同的。程序如下:

  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. /* 運行結果  
  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. */ 

可知用這種方法得到的隨機數是滿足統計規律的。以上就是對C++產生隨機數的相關方法的介紹。

【編輯推薦】

  1. C++打印地址信息實現方法介紹
  2. C++格式化字符串相關應用解析
  3. C++枚舉子相關類型解析
  4. C++枚舉類型用途及定義詳解
  5. C++繼承基礎概念詳解
責任編輯:曹凱 來源: 博客園
相關推薦

2009-06-11 15:16:18

不重復隨機數Java

2010-02-04 11:23:25

C++反射機制

2024-01-25 11:32:21

2010-07-15 13:34:32

Perl隨機數

2011-05-24 17:08:57

rand()srand()

2009-06-17 17:37:43

Java隨機數

2010-10-09 15:35:25

MySQL rand函

2010-02-02 18:01:47

C++字符串替換函數

2010-02-06 11:19:33

C++獲取文件

2009-07-06 15:11:18

Java 隨機數

2010-10-25 16:29:45

Oracle隨機數產生

2011-07-08 10:32:11

Objective-C 隨機數

2010-02-02 16:23:46

C++實現WPF動畫

2009-08-12 18:17:31

C#隨機數發生器

2010-02-03 13:26:53

C++計時

2011-07-08 15:11:03

JAVA

2010-03-05 16:56:42

Python綁定C++

2010-02-03 09:59:42

C++文件流操作

2010-02-01 14:53:42

C++屬性

2019-09-11 10:09:00

Java虛擬機算法
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 黄色大片在线视频 | 一区二区三区在线播放 | 中文字幕亚洲视频 | 91精品在线播放 | 综合久久99 | 亚洲精品免费在线观看 | 亚洲国产精品99久久久久久久久 | 97国产在线观看 | 欧洲精品一区 | 欧洲一级毛片 | 国产综合精品一区二区三区 | 亚洲精品久久久久久久久久久久久 | 一区二区在线不卡 | 亚洲精选久久 | 欧美伊人久久久久久久久影院 | 久久久久久亚洲精品 | 视频一区在线观看 | www.五月天婷婷.com | 久久国产一区 | 午夜不卡一区二区 | 黄色免费在线观看网站 | www,黄色,com | 亚洲成人精品影院 | 日韩视频免费看 | 久久久久久亚洲精品 | av国产在线观看 | 欧洲亚洲精品久久久久 | 亚洲国产精品一区二区第一页 | 一区二区三区视频在线观看 | 欧美成人在线影院 | 99国内精品 | 九九热在线视频免费观看 | 久久久久久国产精品免费免费狐狸 | 久久不卡| 亚洲欧洲成人av每日更新 | 91亚洲免费 | 国产精品一区在线观看 | 国产成人免费视频 | 九色视频网站 | 亚洲日韩第一页 | 日本一二三区在线观看 |