C/C++怎樣產生亂數:這里要用到的是rand()函式和srand()函式,C/C++里沒有自帶的random(int number)函式,
(1) 如果你只要產生亂數而不需要設定范圍的話,你只要用rand()就可以了:rand()會回傳一亂數值, 范圍在0至RAND_MAX 間,RAND_MAX定義在stdlib.h, 其值為0x7fff,
例如:
#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()函式:
例如:隨機生成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));
}
(3)但是上面兩個例子所生成的亂數都只能是一次性的,如果你第二次運行的時候輸出結果仍和第一次一樣,這與srand()函式有關,srand()用來設定rand()產生亂數時的亂數種子,在呼叫rand()函式產生亂數前,必須先利用srand()設好亂數種子(seed), 如果未設亂數種子, rand()在呼叫時會自動設亂數種子為1,上面的兩個例子就是因為沒有設定亂數種子,每次亂數種子都自動設成相同值1 ,進而導致rand()所產生的亂數值都一樣,
srand()函式定義 : void srand (unsigned int seed);
通常可以利用geypid()或time(0)的回傳值來當做seed
如果你用time(0)的話,要加入頭檔案#include<time.h>
例如:
#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));
}
這樣兩次運行的結果就會不一樣了!!
文章內容已修改,去除了其他部分,并修正了一些錯誤,謝謝各位!
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/77545.html
標籤:C++
下一篇:C++的new和delete
