1. 程式人生 > >C語言/C++中的srand()和rand()函式

C語言/C++中的srand()和rand()函式

C語言C++中的srand()和rand()函式

標頭檔案: rand和srand包含在標頭檔案中的<stdlib.h>(c++中使用)中,rand和srand用於產生隨機數。 如:

#include<stdio.h>
#include<stdlib.h>
int main()
{
for (int i = 0; i < 10; i++)
{
printf("%d\t", rand());
}
}

將會產生10個不同的隨機數。但rand存在一定的缺陷,它產生的是偽隨機數,所以每次執行時,你都會發現所產生的10個隨機數是一樣的。 這時就需要使用srand來設定一個種子,並使用系統時間產生隨機數。 c語言中語句srand( (time(NULL) ) ; 表示設定一個隨機種子,每次執行都能保證隨機種子不同。 在C語言中,rand()函式可以用來產生隨機數,但是這不是真正意義上的隨機數,是一個偽隨機數,它是根據一個數,我們可以稱它為種子,為基準以某個遞推公式推算出來的一系數,但這不是真正的隨機數,當計算機正常開機後,這個種子的值是定了的,除非你破壞了系統,為了改變這個種子的值。 因此,C提供了srand()函式,它的原型是 void srand( int a)。用來改變這個種子值。 srand( (time(NULL) )中time(NULL)函式是得到一個從1900年1月1日到現在的時間秒數,這樣每一次執行程式的時間的不同就可以保證得到不同的隨機數了

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main()
{
srand(time(NULL));//使用系統時間產生隨機數
for (int i = 0; i < 10; i++)
{
printf("%d\t", rand());
}
}

每次執行時,你就會發現會產生10個不同的隨機數。 如果想要限制產生的隨機數的範圍,可以使用如下程式碼

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main() { srand(time(NULL)); for (int i = 0; i < 10; i++) { printf("%d\t", rand()%20+100);//範圍為100到120,20表示長度,100表示起始位置 } }

想要產生0到1範圍的隨機數,可使用如下程式碼:

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main()
{
srand(time(NULL));
for (int i = 0; i < 10; i++)
{
printf("%2f\t", (rand
()%100)/100.0);//注意100.0的”.0”不能漏掉 } }