博客 / 詳情

返回

初入隨機數時的思考

是我曾經的一些心路筆記,分享給初學者

random函數
最開始瞭解到隨機數函數,是在primer書上看到的random函數,後來才知道,random函數雖然是隨機數,但是,其實它並不是標準函數,以至於在vs,vc上無法編譯通過。

rand函數
於是,這時候,我才瞭解到了一個標準的函數rand,這個函數不需要單獨的頭文件,只需要最常見的<stdlib.h>即可運行,很是方便。
例子:

    #include <stdio.h>
    #include <stdlib.h>
    int main(){
        int a = rand();
        printf("%d\n",a);
        return 0;
    }

運行結果我就不列舉了,因為是隨機數值。

srand函數
我第一次瞭解到srand函數,是在一道題裏看到的,當時很好奇這個和rand有什麼區別,後來查詢了資料才知道,rand是“偽隨機”,比如,將上面的例子多次運行,會發現,它的數字不變了,這顯然不是我們期望的。
這是由於rand也是公式推算的,而公式推導的結果類比於正態分佈。
圖片.png

因此,srand函數的作用就來了,通過重新計算,使得隨機數依然不同。
void srand (unsigned int);

隨機數可以有範圍限制
舉個例子:

int a = rand() % 100;    //產生0~100的隨機數,注意100會被整除

剛剛這個解釋可能不夠具體,再看下面這個

int a = rand() % 11 + 11;
rand()%11+13這個地方,我們可以看成兩部分:rand()%10是產生 0~10 的隨機數,後面+11保證 a 最小隻能是 11,最大就是 10+11=21

好啦,今天的分享就到這兒了,希望這個博客可以幫助到為這個問題疑惑的同學。

user avatar bingfengbaidu 頭像
1 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.