C++生成隨機數


      C/C++生成隨機數需要用到rand()函數和srand()函數,C/C++內沒有在一個范圍內生成隨機數的自帶函數。

1.rand()函數

功能:隨機發生器

所在頭文件:stdlib.h

rand()返回隨機數值的范圍在0~RAND_MAX之間。0~RAND_MAX每個數字被選中的概率相同。

:rand()產生的是偽隨機數字,每次執行時的結果是相同的。Ctrl+Shift+F5時每次產生的結果是一樣的。

#include <iostream>
#include"stdlib.h"
using namespace std;

int main()
{
    double x;
    x = rand();
    x = x/RAND_MAX;
    cout<<x<<endl;
    return 1;
}

2.srand()函數

      為了避免每次生成固定的隨機數,引進srand()函數。

功能:初始化隨機數發生器

用法:srand(unsigned int seed)

所在頭文件:stdlib.h

      srand()是用來設置rand()產生隨機數時的隨機種子。參數seed必須是整數,如果每次seed都設置相同的值,rand()所產生的隨機數值每次也都一樣。

:要每次生成的隨機數不一樣,用srand()初始化,為了方便,可以利用srand((unsigned) time(NULL))的方法,產生不同的隨機種子。

#include <iostream>
#include <time.h>
#include"stdlib.h"
using namespace std;

int main()
{
    double x;
    srand((unsigned)time(NULL)); //srand(3)
    x = rand();
    x = x/RAND_MAX;
    cout<<x<<endl;
    return 1;
}

3.在一定范圍內生成隨機數的通用公式

要取得[a,b)的隨機整數,使用(rand() % (b-a))+ a;
要取得[a,b]的隨機整數,使用(rand() % (b-a+1))+ a;
要取得(a,b]的隨機整數,使用(rand() % (b-a))+ a + 1;
通用公式:a + rand() % n;其中的a是起始值,n是整數的范圍。
要取得a到b之間的隨機整數,另一種表示:a + (int)b * rand() / (RAND_MAX + 1)。
要取得0~1之間的浮點數,可以使用rand() / double(RAND_MAX)。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

參考文章:http://blog.sina.com.cn/s/blog_79ab4be10100uzrj.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM