計算機猜數字
#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函數來獲取系統時間,得到的值是一個時間戳,即從1970年1月1日0點到現在時間的秒數,然後將得到的time_t類型數據轉化爲(unsigned int)的數,然後再傳給srand函數,用法如下:
srand((unsigned int)time(NULL));
如果仍然覺得時間間隔太小,可以在(unsigned)time(0)或者(unsigned)time(NULL)後面乘上某個合適的整數。 例如,srand((unsigned)time(NULL)*10)
time的參數傳NULL表示不需要經過參數獲得到的time_t數據,time函數原型如下
time_t time(time_t *tloc);
還有另外一種初始化種子的方式如下,用進程的pid作爲種子值seed,在同一個程序中,這樣的種子的值是相同的
srand((unsigned int)getpid())
————————————————
版權聲明:本文爲CSDN博主「TLpigff」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/lvyibin890/article/details/80141412