“剪刀石头布”这个游戏,想必大家都很熟悉了。
两个人在玩游戏时,事先都不知道对方将要出什么,这中间存在着一种随机性。
而这种随机性相当于C语言里stdlib.h库中rand()函数,rand()函数用来产生随机数,因为rand是根据提供给srand()的种子值返回一个随机数,所以要使每次随机的结果不一样,需要在srand()函数里引用time()函数,因为每一次运行程序的时间是不同的,所以seed会不同,运行出来的结果也会不同。
补充:
rand()的内部实现是用线性同余法实现的,是伪随机数,由于周期较长,因此在一定范围内可以看成是随机的。
rand函数需要有srand()函数用来设置rand()产生随机数时的随机数种子。
参数seed是整数,通常可以利用time(0)或geypid(0)的返回值作为seed。
代码如下:
#include "stdio.h"
#include "stdlib.h"
#include "time.h"
代码如下:
int main()
{
char Gamer=0;
int computer,gamer;
int result;
while (1)
{
printf("这个小游戏是——剪刀石头布,\n你要出:\n");
printf("A:剪刀\nB:石头\nC:布\n");
scanf_s("%c", &Gamer);
switch (Gamer)
{
case 65 | 97: //A a
gamer = 4;
break;
case 66 | 98: //B b
gamer = 7;
break;
case 67 | 99: //C c
gamer = 10;
break;
default:
printf("你的选择为%c\n选择错误,退出...\n", Gamer);
system("pause");
return 0;
break;
}
srand((unsigned)time(0));//每一次的seed都不同
computer = rand() % 3+1;
result = gamer + computer;
printf("电脑出了:");
switch (computer)
{
case 3:printf("剪刀\n"); break;
case 1:printf("石头\n"); break;
case 2:printf("布\n"); break;
}
printf("你出了:");
switch (gamer)
{
case 4:printf("剪刀\n"); break;
case 7:printf("石头\n"); break;
case 10:printf("布\n"); break;
}
if (result == 6 || result == 10 || result == 11)
printf("你赢了!");
else if (result == 5 || result == 9 || result == 13)
printf("电脑赢了!");
else
printf("平手");
system("pause>nul&&cls"); //清屏
}
return 0;
}
原文:https://www.cnblogs.com/phyger/p/14073313.html