猜數字遊戲以及C語言中生成隨機數的演算法

2021-08-15 14:21:50 字數 2156 閱讀 1027

相信我們每乙個人都喜歡玩遊戲,對我來說學習c語言等最大的樂趣就是運用自己所學的知識來編寫一些簡單的小遊戲,猜數字遊戲對於c語言初學者來說沒有任何難度,只要你掌握了一些分支語句和迴圈語句就足夠了,唯一乙個難點就是隨機數的生成,好了,我們來看看猜數字遊戲的**吧!

#include

#include

#include

//列印選單函式

void menu()

//猜數字遊戲函式

標頭檔案:time.h
定義函式:time_t time(time_t *timer);

函式說明:此函式會返回從公元 1970 年1 月1 日的utc 時間從0 時0 分0 秒算起到現在所經過的秒數。

返回值:成功則返回秒數,失敗則返回((time_t)-1)值。

引數說明:timer=null時,得到機器日曆時間,time_t是乙個long整型

對於這個函式來說,如果已經宣告了引數t,那麼可以從引數t返回現在的日曆時間,同時也可以通過返回值返回現在的日曆時間。

如果引數為空,函式只通過返回值返回現在的日曆時間。

對於上面的**來說,兩次列印出來的結果是一樣的,所以time(&t)中,變數t中存放當前的日期和時間(相當於函式返回值)。

庫函式中系統提供了兩個函式用於產生隨機數:srand()rand(),定義在stdlib.h。 原型為:

函式一:int rand(void)

srand (seed)中指定的seed開始,返回乙個[0, rand_max(0x7fff)]間的隨機整數。

函式二:void srand(unsigned seed);

引數seedrand()的種子,用來初始化rand()的起始值。

c語言中,rand()函式可以用來產生隨機數,但是這不是真正意義上的隨機數,是乙個偽隨機數。是根據乙個數(可以稱之為種子)為基準以某個遞推公式推算出來的一系列數,當這一系列數很多的時候,就符合正態分佈,從而相當於產生了隨機數,但這不是真正的隨機數,當計算機正常開機後,這個種子的值是確定的,除非你破壞了系統。為了改變這個種子的值,c提供了srand()函式。

在呼叫rand()函式產生隨機數之前,必須先利用srand()設定好隨機數種子,如果沒有設定種子,rand()在呼叫的時候會自動設隨機數種子為1.

因此,可以用下面的方式產生不可預見的隨機序列:

srand((unsigned int)(time(null))

因為每一次執行程式的時間是不同,所以無論什麼時候都可以給srand()提供乙個新的種子,從而進一步「隨機化」rand()輸出的結果。

看看下面**,體會一下如何生成隨機數:

#include

#include

#include

int main()

system("pause");

return

0;}

以上就是我總結的c語言中生成隨機數的演算法,如果有什麼漏洞和不足,還望各路大神多多指點………..

猜數字遊戲(C語言)

題目 輸入乙個隨機四位數,你猜這個四位數。你猜的結果與這個四位數進行比較,如果所在的位和 這個位上的數字都相同,用a表示。如果只是數字相同,而位置不同,則用b表示。你只有10次機會!如 隨機產生的數字為 4325 你猜的數 提示你 4586 1a0b 3524 0a4b.直到在10次內產生4a0b,...

猜數字遊戲 C語言)

猜數字遊戲是令遊戲機隨機產生乙個100以內的正整數,使用者輸入乙個數對其進行猜測,需要你編寫程式自動對其與隨機產生的被猜數進行比較,並提示大了 too big 還是小了 too small 相等表示猜到了。如果猜到,則結束程式。程式還要求統計猜的次數,如果1次猜出該數,提示 bingo 如果3次以內...

c語言猜數字遊戲

include include include include include 2 游標定位函式 由於在vc 6.0中沒有標頭檔案,所以需要編寫gotoxy 函式以實現游標定位功能。void gotoxy int x,int y 3 猜數字 本函式主要實現數字遊戲的功能,系統採用隨機函式隨機生成數字...