C語言隨機函數學不明白?一知識一案例,全面解析C語言隨機函數

前言

本文主要講解C語言的隨機函數,學習隨機函數將由此拉開序幕,親愛的準備好了沒?

隨機數

隨機數主要是通過rand()函數產生的,rand() 函數可以隨機產生一個正整數,它會產生一個無符號整數,範圍在1~32767,即兩字節16位的整數最大值。而GNU C++產生的隨機數範圍為2147483647。 範圍中的每一個數在每次隨機調用rand時都有相同的概率被選中。使用隨機函數的時候需要加上#inlcude <stdlib.h> 頭文件。/<stdlib.h>如以下案例:

C語言隨機函數學不明白?一知識一案例,全面解析C語言隨機函數

注意:每次程序運行的結果答案都是相同的,這顯然不是我們想要的。這是因為,rand函數不是真正的隨機數生成器,而srand()會設置供rand()使用的隨機數種子。如果你在第一次調用rand()之前沒有調用srand(),那麼系統會為你自動調用srand()。而使用同種子相同的數調用 rand()會導致相同的隨機數序列被生成。如果要確保每次產生的都不一樣,我們需要引用一個專門為rand設置隨機化種子的函數srand().

隨機函數種子

隨機函數種子srand函數在庫中說明如下:

<code>//接口說明:

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./<code>
C語言隨機函數學不明白?一知識一案例,全面解析C語言隨機函數

意思就是:要想每次隨機結果不一樣,就要每次運行更改種子,time函數返回當前時間距離197-01-01的描述,每次運行都不一樣,正好可以當做種子,既就是大家學習的rand()函數的時候,老師讓大家寫srand((unsigned int)time(NULL))的原因,讓隨機數與時間綁定關係,時間在改變,隨機數自然能夠改變。

其實srand函數的參數編程中可以自己隨意設置,偽隨機就是每次得到的數據有規律可循,默認情況下數字在1~0x7fff,也就是(1~32767)。當設置參數為srand(1000),則生成的隨機數是1000~0x7fff。

如下實例:

C語言隨機函數學不明白?一知識一案例,全面解析C語言隨機函數

隨機函數固定範圍

主要思路其實非常簡單,就是通過取餘來做即可

C語言隨機函數學不明白?一知識一案例,全面解析C語言隨機函數

尾言

文章都是手打原創,每天最淺顯的介紹C語言、C++,windows知識,喜歡我的文章就關注一波吧,可以看到最新更新和之前的文章哦。如果足下基礎比較差,不妨關注下人人都可以學習的視頻教程

通俗易懂,深入淺出,一個視頻只講一個知識點。視頻不深奧,不需要鑽研,在公交、在地鐵、在廁所都可以觀看,隨時隨地漲姿勢


分享到:


相關文章: