<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 憤怒的考拉 閱讀(1224) 評論(0)  編輯  收藏

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


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

    常用鏈接

    留言簿

    隨筆檔案

    文章檔案

    搜索

    •  

    最新評論

    主站蜘蛛池模板: 久久青青草原亚洲av无码app| 一区二区免费电影| 99精品免费观看| 欧洲人免费视频网站在线| 18观看免费永久视频| 麻豆91免费视频| 免费看美女午夜大片| 亚洲成人免费网址| 亚洲成年人电影在线观看| 亚洲AⅤ男人的天堂在线观看| 91av免费在线视频| 美女视频黄a视频全免费| 免费国产高清视频| 亚洲国产综合91精品麻豆| 朝桐光亚洲专区在线中文字幕| 久久大香香蕉国产免费网站| 中文字幕亚洲综合精品一区| 成年大片免费高清在线看黄| 亚洲成在人线aⅴ免费毛片| 亚洲日本va在线视频观看| 中文无码亚洲精品字幕| 两个人日本免费完整版在线观看1| av无码国产在线看免费网站| 亚洲香蕉网久久综合影视| 精品四虎免费观看国产高清午夜| 免费永久看黄在线观看app| 亚洲a视频在线观看| 免费在线中文日本| 亚洲国产精品久久丫| 精品国产一区二区三区免费| 4480yy私人影院亚洲| 处破痛哭A√18成年片免费| 亚洲日本一区二区| 美女黄网站人色视频免费国产| 亚洲AV日韩AV永久无码绿巨人| 青青久久精品国产免费看| 亚洲日本va在线视频观看| 在线观看无码AV网站永久免费| 好猛好深好爽好硬免费视频| 亚洲精品黄色视频在线观看免费资源| 亚洲五月丁香综合视频|