欧美free性护士vide0shd,老熟女,一区二区三区,久久久久夜夜夜精品国产,久久久久久综合网天天,欧美成人护士h版

首頁綜合 正文
目錄

柚子快報激活碼778899分享:【C語言】隨機數(shù)的生成

柚子快報激活碼778899分享:【C語言】隨機數(shù)的生成

http://yzkb.51969.com/

?

目錄

一、rand函數(shù)

二、srand函數(shù)

三、time函數(shù)

四、生成指定范圍內的隨機數(shù)

?

一、rand函數(shù)

? ? ? ? 我們想要生成一個隨機數(shù),可以使用rand函數(shù)(隨機數(shù)生成器),rand函數(shù)定義在頭文件中。它的函數(shù)原型如下:

int rand(void);

? ? ? ? 它能返回一個 0~RAND_MAX 之間的整數(shù),RAND_MAX的大小由編譯器廠商設定,但一般是32767。可以設置多個隨機數(shù)試一下:

? ? ? ? 重復運行上面的程序,會發(fā)現(xiàn)每次的執(zhí)行結果都一樣,這樣就失去了隨機數(shù)的意義。實際上rand生成的是偽隨機數(shù),這種隨機數(shù)是按照規(guī)定的算法以設置的“種子”值為基準計算出來的,所以本質上是不隨機(按照某種規(guī)則生成)的。因為rand默認種子值是1,所以算法計算的結果都是一樣的。如果想讓每次運行的結果都不同,那么需要讓種子值變化起來。

二、srand函數(shù)

? ? ? ? srand函數(shù)就能用于設置rand函數(shù)的種子值(初始化隨機數(shù)生成器),它也定義在頭文件中,其函數(shù)原型如下:

void srand(unsigned int seed);

? ? ? ? 現(xiàn)在又有一個問題,如果我們需要讓種子值隨機,但是我們想解決的就是rand生成隨機數(shù)的問題,那不就矛盾了嗎?我們不能得到隨機的種子值,但是能得到變化的種子值,比如根據時間而變化。

三、time函數(shù)

? ? ? ? time函數(shù)能獲得當前的時間戳,時間戳就是當前的時間與計算機的初始時間1970年1月1日0時0分0秒之間的差值,以秒為單位。它定義在頭文件中,其函數(shù)原型如下:

time_t time(time_t *timer);

? ? ? ? 可以看看VS2019?的 time_t的定義:

#ifndef _CRT_NO_TIME_T

#ifdef _USE_32BIT_TIME_T

typedef __time32_t time_t;

#else

typedef __time64_t time_t;

#endif

#endif

typedef long __time32_t;

typedef __int64 __time64_t;

? ? ? ? 本質上 time_t 是32位或64位整型。當time的參數(shù)非NULL時,time函數(shù)不僅會返回時間戳,還會把返回的時間戳存儲在timer指向的內存空間里;當參數(shù)為NULL時,time函數(shù)只返回時間戳。

? ? ? ? 現(xiàn)在有了rand函數(shù)、srand函數(shù)和time函數(shù),就能生成每次運行都不一樣的隨機數(shù)了,如下:

第一次運行

第二次運行

? ? ? ? 最后我們要注意的是,程序中隨機數(shù)種子只需要設置一次就行了,不要把它放在循環(huán)里面,比如這樣:

? ? ? ? 這樣會導致每一輪循環(huán)生成的隨機數(shù)都是一樣的,因為程序執(zhí)行得很快,很多輪循環(huán)都會發(fā)生在同1秒內,導致時間戳沒變,設置的種子值也就不變了??梢钥纯次野蜒h(huán)次數(shù)改為1000后(時間延長),首尾的循環(huán)輪次生成的隨機數(shù)是有變化的:

前面的循環(huán)生成的隨機數(shù)

最后面的循環(huán)生成的隨機數(shù)

四、生成指定范圍內的隨機數(shù)

//生成1~100之間的隨機數(shù)

rand() % 100 // 0~99

rand() % 100 + 1 // 1~100

//生成100~200之間的隨機數(shù)

100 + rand() % (200 - 100 + 1)

//生成a~b之間的隨機數(shù)

a + rand() % (b - a + 1)

五、更正

? ? ? ? 更正一下,上面的要寫成srand((unsigned int) time(NULL))更規(guī)范,因為time函數(shù)返回值是time_t類型,srand函數(shù)參數(shù)是unsigned int類型的。如果不強制轉換VS上也會有警告。為了代碼的可移植性和正確性,還是加上比較好。

?

?

?

柚子快報激活碼778899分享:【C語言】隨機數(shù)的生成

http://yzkb.51969.com/

參考文章

評論可見,查看隱藏內容

本文內容根據網絡資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點和立場。

轉載請注明,如有侵權,聯(lián)系刪除。

本文鏈接:http://m.gantiao.com.cn/post/19578427.html

發(fā)布評論

您暫未設置收款碼

請在主題配置——文章設置里上傳

掃描二維碼手機訪問

文章目錄