C語言連續(xù)生成多個隨機(jī)數(shù)實(shí)現(xiàn)可限制范圍
生成隨機(jī)數(shù)
在現(xiàn)實(shí)中我們經(jīng)常用到隨機(jī)數(shù),可怎么實(shí)現(xiàn)呢,且聽小喬慢慢道來。
在C語言中,我們一般使用 <stdlib.h> 頭文件中的 rand() 函數(shù)來生成隨機(jī)數(shù)
int void rand()
可是卻發(fā)現(xiàn)生成的數(shù)字都一樣。
這是因?yàn)閞and()
函數(shù)產(chǎn)生的隨機(jī)數(shù)是偽隨機(jī)數(shù),是根據(jù)一個數(shù)值按照某個公式推算出來的,而這個數(shù)值由一個公式計(jì)算得來,這個值在電腦啟動后是不變的。在這里我將這個公式比作一個種子,現(xiàn)在我們就要修改這個種子。
常用的方法是用 srand 修改種子。
srand用法
void srand(unsigned int seed)
為了使種子是不斷變化的 我們使用到了時間函數(shù) time() (要在 time.h 頭文件下使用)
srand((unsigned int )time(NULL) );
此時看一下代碼及運(yùn)行結(jié)果
int main()
{
int a;
srand((unsigned int)time(0));//修改種子
for (size_t i = 0; i < 10; i++)
{
a = rand();
printf("%d ", p);
}
}

輸出的結(jié)果不相同了。
這是因?yàn)?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ù)生成多個隨機(jī)數(shù)實(shí)現(xiàn)可限制范圍的文章就介紹到這了,更多相關(guān)C語言連續(xù)多個隨機(jī)數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C語言運(yùn)算符優(yōu)先級列表(超詳細(xì))
本篇文章是對C語言中運(yùn)算符的優(yōu)先級進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05
C++?基礎(chǔ)函數(shù)的介紹及使用(Vector+deque+STL)
這篇文章主要介紹了C++?基礎(chǔ)函數(shù)的介紹及使用(Vector+deque+STL),文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-06-06
C++詳細(xì)講解內(nèi)存管理工具primitives
文章向大家介紹C++內(nèi)存管理primitives,主要包括primitives使用實(shí)例、應(yīng)用技巧、基本知識點(diǎn)總結(jié)和需要注意事項(xiàng),具有一定的參考價(jià)值,需要的朋友可以參考一下2022-06-06
C語言實(shí)現(xiàn)學(xué)生信息管理系統(tǒng)(鏈表)
這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)學(xué)生信息管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-06-06
C++實(shí)現(xiàn)LeetCode(105.由先序和中序遍歷建立二叉樹)
這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(105.由先序和中序遍歷建立二叉樹),本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-07-07
C++中的函數(shù)指針與函數(shù)對象的總結(jié)
以下是對C++中的函數(shù)指針與函數(shù)對象的使用進(jìn)行了詳細(xì)的分析介紹,需要的朋友可以參考下2013-07-07

