轉自:https://www.cnblogs.com/vectors07/p/8185215.htmlhtml
C/C++怎樣產生隨機數:這裏要用到的是rand()函數, srand()函數,C語言/C++裏沒有自帶的random(int number)函數。
(1) 若是你只要產生隨機數而不須要設定範圍的話,你只要用rand()就能夠了:rand()會返回一隨機數值, 範圍在0至RAND_MAX 間。RAND_MAX定義在stdlib.h, 其值爲2147483647。
例如:dom
#include<stdio.h>
#include<stdlib.h>
void main()
{
for(int i=0;i<10;i+)
printf("%d/n",rand());
}函數
(2) 若是你要隨機生成一個在必定範圍的數,你能夠在宏定義中定義一個random(int number)函數,而後在main()裏面直接調用random()函數:htm
例如:隨機生成10個0~100的數:
#include<stdio.h>
#include<stdlib.h>
#define random(x) (rand()%x)
void main()
{
for(int x=0;x<10;x++)
printf("%d/n",random(100));
}blog
(3)可是上面兩個例子所生成的隨機數都只能是一次性的,若是你第二次運行的時候輸出結果仍和第一次同樣。這與srand()函數有關。srand()用來設置rand()產生隨機數時的隨機數種子。在調用rand()函數產生隨機數前,必須先利用srand()設好隨機數種子(seed), 若是未設隨機數種子, rand()在調用時會自動設隨機數種子爲1。上面的兩個例子就是由於沒有設置隨機數種子,每次隨機數種子都自動設成相同值1 ,進而致使rand()所產生的隨機數值都同樣。io
srand()函數定義 : void srand (unsigned int seed);
一般能夠利用geypid()或time(0)的返回值來當作seed
若是你用time(0)的話,要加入頭文件#include<time.h>class
例如:
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define random(x) (rand()%x)
void main()
{隨機數srand((int)time(0));
for(int x=0;x<10;x++)
printf("%d/n",random(100));
}im
這樣兩次運行的結果就會不同了!!語言