最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C語(yǔ)言rand函數(shù)的應(yīng)用實(shí)例(隨機(jī)數(shù)的生成)

 更新時(shí)間:2025年12月15日 09:43:32   作者:zore_c  
在c語(yǔ)言中它為我們提供了一個(gè)函數(shù)rand,用它我們可以來(lái)生成隨機(jī)數(shù),而它產(chǎn)生的數(shù)的范圍在0~RAND_MAX之間,這篇文章主要介紹了C語(yǔ)言rand函數(shù)應(yīng)用(隨機(jī)數(shù)的生成)的相關(guān)資料,需要的朋友可以參考下

一、rand函數(shù)

1.簡(jiǎn)介

用于生成隨機(jī)數(shù)的函數(shù)

使?需要包含?個(gè)頭?件:<stdlib.h>

2.返回值

返回一個(gè)介于和之間的偽隨機(jī)整數(shù)。

一個(gè)介于0和RAND_MAX之間的整數(shù)值。

(RAND_MAX為32767)

那為什么說(shuō)是偽隨機(jī)數(shù)呢?

如下代碼:

#include <stdio.h>
#include <stdlib.h>

int main()
{
	printf("%d\n", rand());
	printf("%d\n", rand());
	printf("%d\n", rand());
	printf("%d\n", rand());
	printf("%d\n", rand());
	printf("%d\n", rand());
	printf("%d\n", rand());
	printf("%d\n", rand());
	printf("%d\n", rand());
	printf("%d\n", rand());

	return 0;
}

運(yùn)行結(jié)果:

大家可以自行嘗試下,代碼兩次運(yùn)行結(jié)果一模一樣

這也說(shuō)明了rand生成的數(shù)是偽隨機(jī)數(shù)

那該如何生成真正的隨機(jī)數(shù)呢?

rand函數(shù)是對(duì)?個(gè)叫種?的基準(zhǔn)值進(jìn)?運(yùn)算?成的隨機(jī)數(shù)。之所以前?每次運(yùn)?程序產(chǎn)?的隨機(jī)數(shù)序列是?樣的,是因?yàn)閞and函數(shù)?成隨機(jī)數(shù)的默認(rèn)種?是1。而要想得到真正的隨機(jī)數(shù)就要使種子不斷變化。這就可以用到srand函數(shù)。

二、srand函數(shù)

函數(shù)原型:

void srand(unsigned int seed);

srand函數(shù)的使?需要包含?個(gè)頭?件:<stdlib.h>

調(diào)?rand函數(shù)之前先調(diào)?srand函數(shù),

通過(guò)srand函數(shù)的參數(shù)seed來(lái)設(shè)置rand函數(shù)所需要不斷變化的種子,

使得rand函數(shù)生成的是真正的隨機(jī)數(shù)。

如下代碼:

#include <stdio.h>
#include <stdlib.h>

int main()
{
	srand(1);
	//修改種子
	printf("%d\n", rand());
	printf("%d\n", rand());
	printf("%d\n", rand());
	printf("%d\n", rand());

	return 0;
}

種子不同時(shí)運(yùn)行結(jié)果:

可以看見(jiàn)兩次結(jié)果不同,可以見(jiàn)得:

種子不一樣時(shí),生成的隨機(jī)數(shù)也不同

但是,?成隨機(jī)數(shù)的時(shí)候又需要另?個(gè)隨機(jī)數(shù),這就矛盾了。

三、time函數(shù)

1.簡(jiǎn)介

函數(shù)說(shuō)明:

time函數(shù)可以獲取當(dāng)前的系統(tǒng)時(shí)間,返回的是一個(gè)time_t類(lèi)型的從1970年1?1?0時(shí)0分0秒到現(xiàn)在程序運(yùn)?時(shí)間之間的差值,如果我們給time函數(shù)傳一個(gè)空指針(NULL),就會(huì)只返回這個(gè)時(shí)間的差值,這個(gè)差值也被稱為時(shí)間戳。

返回值:

成功則返回秒數(shù),失敗則返回((time_t)-1)值,錯(cuò)誤原因存于error中。

頭文件:

time函數(shù)在使用前需要包含頭文件< time.h >

2.注意

由上文可知

由于srand函數(shù)的參數(shù)是需要一個(gè)unsigned int 類(lèi)型的值,雖然time函數(shù)的返回值為time_t類(lèi)型的,但是時(shí)間戳是一個(gè)正數(shù);所以我們只要把time函數(shù)的返回值強(qiáng)制類(lèi)型轉(zhuǎn)換為unsigned int類(lèi)型即可。

3.演示

演示:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main()
{
	srand((unsigned int)(time(NULL)));
	//真正的隨機(jī)數(shù)
	printf("%d\n", rand());
	printf("%d\n", rand());
	printf("%d\n", rand());
	printf("%d\n", rand());

	return 0;
}

大家也可以自行去試一試,每次運(yùn)行的結(jié)果都不相同

兩次運(yùn)行結(jié)果:

四、隨機(jī)數(shù)的生成

現(xiàn)在,我們可以生成出一個(gè)介于0和RAND_MAX之間的整數(shù)值

(RAND_MAX為32767)

但是要想生成 0到100100到200 等自定義隨機(jī)數(shù)要怎么辦呢?

這里需要用到一個(gè)運(yùn)算符(%),這個(gè)運(yùn)算符是取模運(yùn)算符,得到的就是除以一個(gè)數(shù)的余數(shù)。我們只需要將得到的隨機(jī)數(shù)除上規(guī)定的范圍那個(gè)數(shù)就可以得到需要范圍的數(shù)。

例如:

  • 要生成 0到99 隨機(jī)數(shù):
    就寫(xiě)rand ()%100;

  • 要生成 1到100 隨機(jī)數(shù):
    就寫(xiě)rand ()%100+1;

  • 要生成 100到200 隨機(jī)數(shù):
    就寫(xiě)rand ()%101+100;

萬(wàn)能公式:
生成 a 到 b 隨機(jī)數(shù):
a + rand( ) % ( b - a + 1 );

演示:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main()
{
	srand((unsigned int)(time(NULL)));
	//真正的隨機(jī)數(shù)
	printf("%d\n", rand() % 100);
	//0-99
	printf("%d\n", rand() % 100 + 1);
	//1-100
	printf("%d\n", rand() % 101 + 100);
	//100-200

	return 0;
}

運(yùn)行結(jié)果:

五、應(yīng)用

學(xué)會(huì)了隨機(jī)數(shù)的生成,我們可以應(yīng)用到隨機(jī)數(shù)完成一些游戲

掃雷中布置雷是隨機(jī)的,故可以用到rand函數(shù)以及本文的內(nèi)容

我們就可以完成一個(gè)掃雷游戲

下一期我們?cè)斀鈷呃祝。。?/p>

六、結(jié)語(yǔ)

本期資料來(lái)自于:

https://legacy.cplusplus.com/

到此這篇關(guān)于C語(yǔ)言rand函數(shù)應(yīng)用(隨機(jī)數(shù)的生成)的文章就介紹到這了,更多相關(guān)C語(yǔ)言rand函數(shù)應(yīng)用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Vs2019+Qt+Opencv環(huán)境配置心得(圖文)

    Vs2019+Qt+Opencv環(huán)境配置心得(圖文)

    這篇文章主要介紹了Vs2019+Qt+Opencv環(huán)境配置心得(圖文),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • C語(yǔ)言中.與->的區(qū)別詳細(xì)解析

    C語(yǔ)言中.與->的區(qū)別詳細(xì)解析

    這篇文章主要給大家介紹了關(guān)于C語(yǔ)言中.與->區(qū)別的相關(guān)資料,這雖然是個(gè)小問(wèn)題,但有時(shí)候很容易讓人迷惑,因?yàn)橛械臅r(shí)候用混淆了,程序編譯不通過(guò),需要的朋友可以參考下
    2023-06-06
  • 關(guān)于移位操作的一點(diǎn)重要說(shuō)明

    關(guān)于移位操作的一點(diǎn)重要說(shuō)明

    下面小編就為大家?guī)?lái)一篇關(guān)于移位操作的一點(diǎn)重要說(shuō)明。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-12-12
  • C++類(lèi)中的六大默認(rèn)成員函數(shù)詳解

    C++類(lèi)中的六大默認(rèn)成員函數(shù)詳解

    這篇文章主要介紹了C++類(lèi)中的六大默認(rèn)成員函數(shù),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-04-04
  • c++?error:crosses?initialization?of問(wèn)題解決分析

    c++?error:crosses?initialization?of問(wèn)題解決分析

    這篇文章主要介紹了c++?error:crosses?initialization?ofde?問(wèn)題解決分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-08-08
  • OpenCV視頻流C++多線程處理方法詳細(xì)分析

    OpenCV視頻流C++多線程處理方法詳細(xì)分析

    為OpenCV是搞計(jì)算機(jī)視覺(jué)必須要掌握的基礎(chǔ),這篇文章主要給大家介紹了關(guān)于OpenCV視頻流多線程處理的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-11-11
  • C++ string類(lèi)getline()用法實(shí)例詳解

    C++ string類(lèi)getline()用法實(shí)例詳解

    C++ getline()是一種標(biāo)準(zhǔn)庫(kù)函數(shù),用于從輸入流中讀取字符串或行,它是<string>標(biāo)頭的一部分,本文介紹C++ string類(lèi)getline()用法詳解,感興趣的朋友一起看看吧
    2024-03-03
  • C++實(shí)例輸入多行數(shù)字到數(shù)組

    C++實(shí)例輸入多行數(shù)字到數(shù)組

    這篇文章主要介紹了C++實(shí)例輸入多行數(shù)字到數(shù)組的相關(guān)資料,這里提供實(shí)例代碼幫助大家學(xué)習(xí)理解,需要的朋友可以參考下
    2016-12-12
  • C++設(shè)計(jì)模式之享元模式(Flyweight)

    C++設(shè)計(jì)模式之享元模式(Flyweight)

    這篇文章主要為大家詳細(xì)介紹了C++設(shè)計(jì)模式之享元模式Flyweight,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-04-04
  • C++類(lèi)的構(gòu)造與析構(gòu)特點(diǎn)及作用詳解

    C++類(lèi)的構(gòu)造與析構(gòu)特點(diǎn)及作用詳解

    本文章將會(huì)可能會(huì)涉及到匯編的知識(shí),不過(guò)沒(méi)有關(guān)系,我會(huì)講的盡量通俗易懂;另外本篇文章開(kāi)始前,建議了解下什么是函數(shù)重載,這個(gè)概念很簡(jiǎn)單的--有相同的函數(shù)名,但參數(shù)列表不相同的函數(shù),就是函數(shù)重載
    2022-10-10

最新評(píng)論

壶关县| 莱芜市| 大渡口区| 常宁市| 辽阳市| 平罗县| 隆回县| 阿勒泰市| 青岛市| 上蔡县| 扎兰屯市| 若尔盖县| 灌南县| 介休市| 中宁县| 平利县| 望都县| 手游| 凌源市| 广西| 阳山县| 洪雅县| 池州市| 西丰县| 宾川县| 昆山市| 汶川县| 龙江县| 青海省| 忻城县| 萍乡市| 积石山| 平度市| 盐城市| 长寿区| 舟曲县| 盘山县| 罗城| 南丰县| 孝感市| 页游|