c語言利用時間戳生成隨機數

c語言中rand()函數用來生成隨機數,範圍是0-30000+的一個整數,如果不加任何設置,每次的確可以生成隨機數,每次生成的數字也不一樣,但是問題來了,我們來生成10個隨機數測試一下,如圖所示
c語言利用時間戳生成隨機數
這是輸出結果
c語言利用時間戳生成隨機數
無論調試多少次,會發現十個數字永遠是他們十個。
那麼如何解決這個問題呢,我們可以使用MSDN來研究一下rand()函數
c語言利用時間戳生成隨機數
這句裏面的rand-max就是指的生成隨機數的最大值也就是三萬多的那個數,後面說的是在調用rand()函數前,需要使用srand函數來設置隨機數的起點,我們來試一下看看結果,括號裏面的數可以隨便設置,跟之前的結果確實不同,但是還是一樣的,只要srand裏面的數字確定後,每次調試的結果都是相同的
c語言利用時間戳生成隨機數
c語言利用時間戳生成隨機數
所以問題的關鍵就來了,我們想要每次的rand生成的隨機數不同,如果讓srand裏面的那個數也不停的變化,是不是就可以解決問題了呢,所以難道要套娃了嗎???來試試
c語言利用時間戳生成隨機數
這就是套娃結果,但是問題還是那個問題,每次調試都是這個結果,套娃失敗!爲什麼呢,因爲這裏的K值是由rand生成,而前面我們也試過了,rand生成的K值也是固定的十個數,所以關鍵是要姐解決這個k值,如果k值每時每刻都不同,那麼生成的隨機數也就不可能相同了!所以這裏的k值我們就用到了時間戳!!!!!不知道時間戳是啥可以百度一下!!就是一個隨時間一直變化的一個值
如圖所示:
c語言利用時間戳生成隨機數
c語言利用時間戳生成隨機數
srand裏面的放上這句話就可以獲得時間戳隨機值,srand是設置隨機數初始值的,所以放在循環外面就可以了,也就是設置一次就行了,這樣每次的結果都不相同了。















後面不知道怎麼描述了,寫的有點亂了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章