1. 程式人生 > >C++隨機數產生

C++隨機數產生

在C++中產生隨機數還是比較簡單的。但是需要注意的是,其實軟體裡面的隨機數其實都是偽隨機數。在使用C++ rand()的時候,其實每次產生的是同一個數,如果希望每次產生的是不同的數,那麼我們就可以使用時間來做種子,來獲得隨機數

單純的rand()會返回一個0至RAND_MAX之間的隨機數值,而RAND_MAX的值與int位數有關,最小是32767。不過rand()是一次性的,因為系統預設的隨機數種子為1,只要隨機數種子不變,其生成的隨機數序列就不會改變。

其實,對於rand()的範圍,我們是可以進行人為設定的,只需要在巨集定義中定義一個random(int x)函式,就可以生成範圍為0至x的隨機數值。當然,也可以定義為random(a,b),使其生成範圍為a至b的隨機數值。


Srand 產生不同隨機數例項:

#include <iostream>
using namespace std;
int main(int argc, char * argv[]){
    srand((unsigned int)time(NULL));
    for(int i=0;i<NUMBER;i++){//NUMBER IS Marco
      cout<<rand()<<endl;
    }
}

當然啦,把隨機數限制在一定的範圍裡面只需要加上一個數和模上一個範圍即可。

#include <iostream>
using namespace std;

int main(){
    srand((unsigned int)time(NULL));
    
    for(int i=0;i<NUMBER;i++){
        int a = 32 + rand()%20;
        cout<<a<<endl;
    }
    return 0;
}

這個的話就會把隨機出來的是限制在32~52之間了。

通過加上一個基底,把隨機數通過取模的方式限制在一定區域裡面,就可以獲得在一定範圍裡面的隨機數了