<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 1,  comments - 0,  trackbacks - 0
    隨機數與隨機種子      
          調用隨機數函數 rand() 的時候, 實際得到的這個隨機數并不是絕對隨機的,它是以一個初始值,通過一個算法,計算出來的“偽隨機數"數列,每次調用rand()時,從這個數列依次取出一個值,做為隨機數。這個初始的值就是"隨機數種子", 也就是說,如果隨機數種子相同,計算出的隨機數數列是相同的。而srandom( x) 這個函數就是初始化隨機數產生器,設定隨機數種子用的。給定的x的就是隨機數種子。可以驗證,當你多次調用srandm(x)時,如果x取值相同,則得到的隨機數數列是一樣的。所以,若我們每次運行程序時,要得到不同的隨機數序列,就應該用不同的種子來初始化這個隨機數產生器。比如說,用時間初始化它,或者用getpid(),用進程的pid號初始化,由于每次運行程序時,它的pid號一般是不同的,所以能夠產生不同的隨機數序列。

    舉例說明
    在vc++中程序中用了srandom()和random(),頭文件為stdlib.h,但編譯出現錯誤error C3861: “srandom”: 找不到標識符。
      原因是現在vc++編譯器的庫函數中沒有randomize()和random(),分別用srand()和rand()代替了。
      #include <time.h> //定義關于時間的函數  
      一般在用到time(NULL)(當前時間)函數時需要包含此頭文件  
      #include <stdlib.h> //定義雜項函數及內存分配函數  
      一般在用到rand()和srand()函數時需要包含此頭文件  

      函數名: random 功 能: 隨機數發生器,也就是產生一個隨機數  
      用 法: int random(int num);  
      產生的隨機數范圍為0~num-1。  

      函數名: randomize  
      功 能: 初始化隨機數發生器,相當于撥隨機種子  
      用 法: void randomize(void);
     
    1. #include <iostream>  
    2. #include <stdlib.h>    // Need random(), srandom()  
    3. #include <time.h>      // Need time()  
    4. #include <algorithm>   // Need sort(), copy()  
    5. #include <vector>      // Need vector  
    6.   
    7. using namespace std;  
    8.   
    9. void Display(vector<int>& v, const char* s);  
    10.   
    11. int main()  
    12. {  
    13.     // Seed the random number generator  
    14.     srand(time(NULL));  
    15.     // Construct vector and fill with random integer values  
    16.     vector<int> collection(10);  
    17.     for (int i = 0; i < 10; i++)  
    18.         collection[i] = rand() % 10000;  
    19.       
    20.     // Display, sort, and redisplay  
    21.     Display(collection, "Before sorting");  
    22.     sort(collection.begin(), collection.end());  
    23.     Display(collection, "After sorting");  
    24.     return 0;  
    25. }  
    26.   
    27. // Display label s and contents of integer vector v  
    28. void Display(vector<int>& v, const char* s)  
    29. {  
    30.     cout << endl << s << endl;  
    31.     copy(v.begin(), v.end(),ostream_iterator<int>(cout, "\t"));  
    32.     cout << endl;  
    33. }  
    一般情況下可以設置當前時間為種子 srandom((int)time(0));
    需要多次取隨即數時,可以將上次拿到的隨即數作為種子

    posted on 2012-03-29 15:15 憤怒的考拉 閱讀(1222) 評論(0)  編輯  收藏

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    <2025年7月>
    293012345
    6789101112
    13141516171819
    20212223242526
    272829303112
    3456789

    常用鏈接

    留言簿

    隨筆檔案

    文章檔案

    搜索

    •  

    最新評論

    主站蜘蛛池模板: 亚洲日本中文字幕天堂网| 大学生美女毛片免费视频| 亚洲AV中文无码乱人伦| 国产成人亚洲精品无码AV大片| 97视频免费在线| 亚洲不卡中文字幕| 成人黄软件网18免费下载成人黄18免费视频 | 男人进去女人爽免费视频国产| 亚洲色婷婷综合开心网| 一级一级一片免费高清| 亚洲区小说区图片区| 热99RE久久精品这里都是精品免费 | 99爱在线观看免费完整版| 91嫩草私人成人亚洲影院| 国产曰批免费视频播放免费s| 亚洲乱码中文论理电影| 成人午夜视频免费| 亚洲欧洲专线一区| 免费中文字幕在线| 东方aⅴ免费观看久久av| 久久精品国产亚洲AV大全| 免费人成视频在线| 免费人成视频在线观看免费| 亚洲日韩精品A∨片无码| 最近2019中文字幕免费直播| 中文字幕亚洲精品无码| 亚洲欧洲中文日韩久久AV乱码| 你是我的城池营垒免费观看完整版 | 97人伦色伦成人免费视频| 亚洲AV性色在线观看| 亚洲一区二区三区在线播放 | 色se01短视频永久免费| 天天综合亚洲色在线精品| 国产亚洲av片在线观看16女人| 亚洲毛片免费观看| 美女黄频免费网站| 91在线精品亚洲一区二区| 国产小视频免费观看| 日韩免费在线视频| 国产精品亚洲二区在线| 亚洲av日韩av不卡在线观看|