c语言rand函数_C语言随机函数学不明白?一知识一案例,全面解析C语言随机函数
前言
本文主要講解C語言的隨機(jī)函數(shù),學(xué)習(xí)隨機(jī)函數(shù)將由此拉開序幕,親愛的準(zhǔn)備好了沒?
隨機(jī)數(shù)
隨機(jī)數(shù)主要是通過rand()函數(shù)產(chǎn)生的,rand() 函數(shù)可以隨機(jī)產(chǎn)生一個正整數(shù),它會產(chǎn)生一個無符號整數(shù),范圍在1~32767,即兩字節(jié)16位的整數(shù)最大值。而GNU C++產(chǎn)生的隨機(jī)數(shù)范圍為2147483647。 范圍中的每一個數(shù)在每次隨機(jī)調(diào)用rand時都有相同的概率被選中。使用隨機(jī)函數(shù)的時候需要加上#inlcude 頭文件。如以下案例:
注意:每次程序運(yùn)行的結(jié)果答案都是相同的,這顯然不是我們想要的。這是因?yàn)?#xff0c;rand函數(shù)不是真正的隨機(jī)數(shù)生成器,而srand()會設(shè)置供rand()使用的隨機(jī)數(shù)種子。如果你在第一次調(diào)用rand()之前沒有調(diào)用srand(),那么系統(tǒng)會為你自動調(diào)用srand()。而使用同種子相同的數(shù)調(diào)用 rand()會導(dǎo)致相同的隨機(jī)數(shù)序列被生成。如果要確保每次產(chǎn)生的都不一樣,我們需要引用一個專門為rand設(shè)置隨機(jī)化種子的函數(shù)srand().
隨機(jī)函數(shù)種子
隨機(jī)函數(shù)種子srand函數(shù)在庫中說明如下:
//接口說明:time()? returns? the? time? as? the? number? of? seconds? since? the Epoch, 1970-01-01 00:00:00 +0000 (UTC).? ?If tloc is non-NULL, the return value is also stored in the memory? pointed to by tloc.意思就是:要想每次隨機(jī)結(jié)果不一樣,就要每次運(yùn)行更改種子,time函數(shù)返回當(dāng)前時間距離197-01-01的描述,每次運(yùn)行都不一樣,正好可以當(dāng)做種子,既就是大家學(xué)習(xí)的rand()函數(shù)的時候,老師讓大家寫srand((unsigned int)time(NULL))的原因,讓隨機(jī)數(shù)與時間綁定關(guān)系,時間在改變,隨機(jī)數(shù)自然能夠改變。
其實(shí)srand函數(shù)的參數(shù)編程中可以自己隨意設(shè)置,偽隨機(jī)就是每次得到的數(shù)據(jù)有規(guī)律可循,默認(rèn)情況下數(shù)字在1~0x7fff,也就是(1~32767)。當(dāng)設(shè)置參數(shù)為srand(1000),則生成的隨機(jī)數(shù)是1000~0x7fff。
如下實(shí)例:
隨機(jī)函數(shù)固定范圍
主要思路其實(shí)非常簡單,就是通過取余來做即可
尾言
文章都是手打原創(chuàng),每天最淺顯的介紹C語言、C++,windows知識,喜歡我的文章就關(guān)注一波吧,可以看到最新更新和之前的文章哦。如果足下基礎(chǔ)比較差,不妨關(guān)注下人人都可以學(xué)習(xí)的視頻教程
《C語言51課視頻教程合集》
《C++45課視頻教程》
通俗易懂,深入淺出,一個視頻只講一個知識點(diǎn)。視頻不深奧,不需要鉆研,在公交、在地鐵、在廁所都可以觀看,隨時隨地漲姿勢
總結(jié)
以上是生活随笔為你收集整理的c语言rand函数_C语言随机函数学不明白?一知识一案例,全面解析C语言随机函数的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 通过两点的经纬度计算与正北方向的夹角JS
- 下一篇: 网站木马修复网站漏洞修复方案