rand函數在產生隨機數前,需要系統提供的生成偽隨機數序列的種子,rand根據這個種子的值產生一系列隨機數。如果系統提供的種子沒有變化,每次調用rand函數生成的偽隨機數序列都是一樣的。srand(unsigned seed)通過參數seed改變系統提供的種子值,從而可以使得每次調用rand函數生成的偽隨機數序列不同,從而實現真正意義上的“隨機”。通常可以利用系統時間來改變系統的種子值,即srand(time(NULL)),可以為rand函數提供不同的種子值,進而產生不同的隨機數序列。
#include <iostream> #include <time.h> //隨機生成0或者1 int main() { srand((unsigned)time(NULL));//srand()就是給rand()提供種子seed //100次隨機生成0或者1 for (int i =0; i < 100; i++) { int num = rand()%2;//對2取余得到就是0或者1 printf("第%d次隨機生成的數: %d \n",i+1,num); } printf("\n"); return 0; }
運行結果: