如何在C 中產生隨機數

2021-08-20 13:07:34 字數 1609 閱讀 3169

rand()函式

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

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

srand()函式

srand()可用來設定rand()產生隨機數時的隨機數種子。通過設定不同的種子,我們可以獲取不同的隨機數序列。可以利用srand((unsigned int)(time(null))的方法,利用系統時鐘,產生不同的隨機數種子。不過要呼叫time(),需要加入標頭檔案< ctime >。

示例:#include#include#includeusing namespace std;

int main()

{ srand((unsigned)time(null));

for(int i=0;i<10;i++)

cout<

產生一定範圍隨機數的通用表示公式是:

取得(0,x)的隨機整數:rand()%x;

取得(a,b)的隨機整數:rand()%(b-a);

取得[a,b)的隨機整數:rand()%(b-a)+a;

取得[a,b]的隨機整數:rand()%(b-a+1)+a;

取得(a,b]的隨機整數:rand()%(b-a)+a+1;

取得0-1之間的浮點數:rand()/double(rand_max)。

要取得[a,b)的隨機整數,使用(rand() % (b-a))+ a (結果值含a不含b)。

要取得[a,b]的隨機整數,使用(rand() % (b-a+1))+ a (結果值含a和b)。

要取得(a,b]的隨機整數,使用(rand() % (b-a))+ a + 1 (結果值不含a含b)。

(總的來說,通用公式:a + rand() % n ;其中的a是起始值,n是整數的範圍)

要取得a到b之間的隨機整數,另一種表示:a + (int)b * rand() / (rand_max + 1)。

要取得0~1之間的浮點數,可以使用rand() / double(rand_max)。

示例:#include#include#include#define random(a,b) (rand()%(b-a+1)+a)

using namespace std;

int main()

{ srand((unsigned)time(null));

for(int i=0;i<10;i++)

cout<

獲取1~10之間的隨機數:

#include #include #include #define min 1

#define max 10

using namespace std;

int main(){

int i;

srand(time(null));

cout<<"ten random numbers from "<

如何在C 中產生隨機數

c 中沒有自帶的random函式,要實現隨機數的生成就需要使用rand 和srand 不過,由於rand 的內部實現是用線性同餘法做的,所以生成的並不是真正的隨機數,而是在一定範圍內可看為隨機的偽隨機數。單純的rand 會返回乙個0至rand max之間的隨機數值,而rand max的值與int位數...

VC中產生隨機數

需要的標頭檔案 stdlib.h 庫函式 srand rand time 方法 1.首先設定種子srand unsigned time null 使用當前時間作為種子是多數人的習慣做法 2.產生隨機數 rand 可以產生乙個隨機數 範圍在0 rand max 32767 之間 如果要產生乙個 min...

C語言中產生隨機數

c語言 c 怎樣產生隨機數 這裡要用到的是rand 函式,srand 函式,c語言 c 裡沒有自帶的random int number 函式。1 如果你只要產生隨機數而不需要設定範圍的話,你只要用rand 就可以了 rand 會返回一隨機數值,範圍在0至rand max 間。rand max定義在s...