C語言連續(xù)生成多個隨機數(shù)實現(xiàn)可限制范圍
生成隨機數(shù)
在現(xiàn)實中我們經(jīng)常用到隨機數(shù),可怎么實現(xiàn)呢,且聽小喬慢慢道來。
在C語言中,我們一般使用 <stdlib.h> 頭文件中的 rand() 函數(shù)來生成隨機數(shù)
int void rand()
可是卻發(fā)現(xiàn)生成的數(shù)字都一樣。
這是因為rand()
函數(shù)產(chǎn)生的隨機數(shù)是偽隨機數(shù),是根據(jù)一個數(shù)值按照某個公式推算出來的,而這個數(shù)值由一個公式計算得來,這個值在電腦啟動后是不變的。在這里我將這個公式比作一個種子,現(xiàn)在我們就要修改這個種子。
常用的方法是用 srand 修改種子。
srand用法
void srand(unsigned int seed)
為了使種子是不斷變化的 我們使用到了時間函數(shù) time() (要在 time.h 頭文件下使用)
srand((unsigned int )time(NULL) );
此時看一下代碼及運行結(jié)果
int main() { int a; srand((unsigned int)time(0));//修改種子 for (size_t i = 0; i < 10; i++) { a = rand(); printf("%d ", p); } }
輸出的結(jié)果不相同了。
這是因為 time(NULL)
是隨毫秒變化的,種子變化極快,所以成無序性。
限制范圍
設(shè)范圍區(qū)間為(max,min);
那么只需 rand%(max-min+1)+min
即可
代碼
int main() { int a; srand((unsigned int)time(0));//修改種子 for (size_t i = 0; i < 5; i++) { a = rand(); int p = a % (100 - 1+1) + 1;//設(shè)置范圍 1-100 printf("%d ", p); Sleep(1500); } }
到此這篇關(guān)于C語言連續(xù)生成多個隨機數(shù)實現(xiàn)可限制范圍的文章就介紹到這了,更多相關(guān)C語言連續(xù)多個隨機數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
淺析C++模板類型中的原樣轉(zhuǎn)發(fā)和可變參數(shù)的實現(xiàn)
可變參數(shù)模板(variadic templates)是C++11新增的強大的特性之一,它對模板參數(shù)進行了高度泛化,能表示0到任意個數(shù)、任意類型的參數(shù),這篇文章主要介紹了C++可變參數(shù)模板的展開方式,需要的朋友可以參考下2022-08-08C/C++ 中const關(guān)鍵字的用法小結(jié)
C++中的const關(guān)鍵字的用法非常靈活,而使用const將大大改善程序的健壯性。這篇文章主要介紹了C/C++ 中const關(guān)鍵字的用法,需要的朋友可以參考下2020-02-02