#include "stdafx.h" #include "stdlib.h" #include "time.h" #include "iostream" int _tmain(int argc, _TCHAR* argv[]) { int a[4] = {},b[4]; int i,j,m,x=0,y=0,wrongtime=0; srand((unsigned int)time(NULL));//随机数发生器的初始化函数 改变系统提供的种子值
for (i=0;i<=3;i++){ int temp = rand()%9 + 1;//生成随机数 可以自己取定范围,利用取余 a[i]=temp; for(j=0;j<i;j++) if(temp==a[j]) i--; } /* for(i=0;i<=3;i++) printf("a[%d]=%d ",i,a[i]);*/ for(j=0;j<=2;j++) for(i=0;i<=2-j;i++) if(a[i]>a[i+1]) {m=a[i]; a[i]=a[i+1]; a[i+1]=m;} /*for(i=0;i<=3;i++) printf("%d",a[i]);*/ printf("请输入你所猜的四个数字: "); while(x!=4){x=0,y=0; for(j=0;j<=3;j++) scanf("%d",&b[j]); for(i=0;i<=3;i++) if(a[i]==b[i]) x++; for(i=0;i<=3;i++) for(j=0;j<=3;j++) {while(i!=j) {if(a[i]==b[j])y++; break;} } printf("%dA%dB ",x,y); if(x==4)printf("恭喜您挑战成功!"); else wrongtime++; if(wrongtime==7) {printf("很遗憾您挑战失败。"); break;} } system("pause"); return 0; }
rand函数在产生随机数前,需要系统提供的生成伪随机数序列的种子,rand根据这个种子的值产生一系列随机数。如果系统提供的种子没有变化,每次调用rand函数生成的伪随机数序列都是一样的。srand(unsigned seed)通过参数seed改变系统提供的种子值,从而可以使得每次调用rand函数生成的伪随机数序列不同,从而实现真正意义上的"随机"。通常可以利用系统时间来改变系统的种子值,即srand(time(NULL)),可以为rand函数提供不同的种子值,进而产生不同的随机数序列