#include<time.h>
rand() 函數:調用一次隨機產生0-32767間的整形數。頭文件:#include<stdlib.h>
srand() 函數:定義rand()函數中seed的值。 C++中使用rand()函數隨機。然而,rand()產生的并不是真正隨機數,而是偽隨機數,其本質是一個周期無限長的數列,每次調用rand(),就從該數列中某個位置開始取值。若程序在一次執行中多次調用rand(),則依次從這個數列中取值。然而,如果每次開始取值的位置(seed)是一樣的,那么所產生的值是一樣的。為了解決這個問題,就要改變每次開始的位置(seed的值),由于時間是不斷變化的,所以自然想到用time(NULL)/time(0),這樣一來,調用rand()前,先定義srand(time(0)),就使得每次數列的開始位置不一樣(也可理解為使用seed計算得到了這個數列,每次seed不同,數列不同)。 舉例:#include<iostream>using namespace std;#include<time.h>#include<stdlib.h>void main(){ //A for(int i=0;i<10;i++) { srand(time(NULL)); cout<<time(NULL)<<' '<<rand()<<'/n'; }} 若把srand(time(NULL))
放在循環里,由于循環速度很快,時間在秒數的量級上沒有變化,所以總是用同一個seed對數列初始化,故多次運行,輸出的隨機數都是相同的。 seed用time(0)初始化一次就好,置于循環中達不到產生隨機數的目的,應將其置于A行。
新聞熱點
疑難解答
圖片精選