日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

srand((unsigned)time(NULL))详解

發(fā)布時間:2023/11/27 生活经验 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 srand((unsigned)time(NULL))详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

版權聲明:本文為博主原創(chuàng)文章,未經博主允許不得轉載。?? ?https://blog.csdn.net/jx232515/article/details/51510336
srand函數是隨機數發(fā)生器的初始化函數。原型:void srand(unsigned seed);

用法:它初始化隨機種子,會提供一個種子,這個種子會對應一個隨機數,如果使用相同的種子后面的rand()函數會出現一樣的隨機數,如: srand(1); 直接使用1來初始化種子。不過為了防止隨機數每次重復,常常使用系統時間來初始化,即使用 time函數來獲得系統時間,它的返回值為從 00:00:00 GMT, January 1, 1970 到現在所持續(xù)的秒數,然后將time_t型數據轉化為(unsigned)型再傳給srand函數,即: srand((unsigned) time(&t)); 還有一個經常用法,不需要定義time_t型t變量,即: srand((unsigned) time(NULL)); 直接傳入一個空指針,因為你的程序中往往并不需要經過參數獲得的數據。

進一步說明下:計算機并不能產生真正的隨機數,而是已經編寫好的一些無規(guī)則排列的數字存儲在電腦里,把這些數字劃分為若干相等的N份,并為每份加上一個編號用srand()函數獲取這個編號,然后rand()就按順序獲取這些數字,當srand()的參數值固定的時候,rand()獲得的數也是固定的,所以一般srand的參數用time(NULL),因為系統的時間一直在變,所以rand()獲得的數,也就一直在變,相當于是隨機數了。只要用戶或第三方不設置隨機種子,那么在默認情況下隨機種子來自系統時鐘。如果想在一個程序中生成隨機數序列,需要至多在生成隨機數之前設置一次隨機種子。?即:只需在主程序開始處調用srand((unsigned)time(NULL)); 后面直接用rand就可以了。不要在for等循環(huán)放置srand((unsigned)time(NULL));
?

?void test_rand(void){unsigned long n;srand((unsigned)time(NULL));for(int i = 0; i < 100; i++){n = rand();printf("d\n", n);}
}

?

總結

以上是生活随笔為你收集整理的srand((unsigned)time(NULL))详解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。