C語言:計算機猜數字

計算機猜數字

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main()
{
	srand(time(0));
	int number = rand()%100+1;
	int count = 0;
	int a=0;
	printf("我已經想好了一個1到100之間的數。\n");
	do {
		printf("請猜這個1到100之間的數:");
		scanf("%d",&a);
		count++;
		if(a>number){
			printf("你猜的數大了");
		}
		 else if(a<number){
			printf("你猜的數小了");
		}
	} while(a!=number);
	printf("太好了,你用了%d次就猜到了答案\n",count);
}
`
## 程序說明
這裏的srand函數和time函數如下:
srand函數
    srand函數是隨機數發生器的初始化函數,原型:
void srand(unsigned int seed);

    這個函數需要提供一個種子,如srand(1),用1來初始化種子
    rand()產生隨機數時,如果用srand(seed)播下種子之後,一旦種子相同(下面的getpid方法),產生的隨機數將是相同的。當然很多時候刻意讓rand()產生的隨機數隨機化,用時間作種子 srand(time(NULL)),這樣每次運行程序的時間肯定是不相同的,產生的隨機數肯定就不一樣了。

    我們常常使用系統時間來初始化,使用time函數來獲取系統時間,得到的值是一個時間戳,即從1970110點到現在時間的秒數,然後將得到的time_t類型數據轉化爲(unsigned int)的數,然後再傳給srand函數,用法如下:
        srand((unsigned int)time(NULL));//我們在使用rand和srand時,主要使用的就是這一種初始化方法!!
        如果仍然覺得時間間隔太小,可以在(unsigned)time(0)或者(unsigned)time(NULL)後面乘上某個合適的整數。 例如,srand((unsigned)time(NULL)*10)
        time的參數傳NULL表示不需要經過參數獲得到的time_t數據,time函數原型如下

time_t time(time_t *tloc);//time_t類型被定義爲一個長整型

    還有另外一種初始化種子的方式如下,用進程的pid作爲種子值seed,在同一個程序中,這樣的種子的值是相同的
        srand((unsigned int)getpid())
————————————————
版權聲明:本文爲CSDN博主「TLpigff」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/lvyibin890/article/details/80141412

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