产生随机数与相应的猜拳小游戏
程序员文章站
2022-04-09 18:25:50
一、简介 c++中,产生随机数的通用方法就是调用 srand()和 rand() 函数。值得注意的是,所有程序中“产生”的随机数其实是伪随机数,本质是调用存储在计算机里的一组无序数值序列。 因此在初始化随机数种子时,如果初始化相同的种子数值,得到的“随机数”会是一样的数值。 第一次运行的结果。 第二 ......
一、简介
c++中,产生随机数的通用方法就是调用 srand()和 rand() 函数。值得注意的是,所有程序中“产生”的随机数其实是伪随机数,本质是调用存储在计算机里的一组无序数值序列。
因此在初始化随机数种子时,如果初始化相同的种子数值,得到的“随机数”会是一样的数值。
1 #include <iostream> 2 #include <cstdlib> 3 using namespace std; 4 int main() 5 { 6 int i; 7 srand(1); 8 for (i = 0; i < 10; i++) 9 { 10 cout << rand() << " "; 11 } 12 }
第一次运行的结果。
第二次运行的结果,可以看出并不是真正意义上的随机数。
但是在运行同一次程序时,可以把这些数字看成是随机数。
二、产生随机数
关键是调用 time 函数初始化随机数种子,达到种子随变。此时需要调用 <ctime>头文件。
1 #include <iostream> 2 #include <ctime> 3 #include <cstdlib> 4 using namespace std; 5 int main() 6 { 7 int i; 8 srand((unsigned)time(null)); 9 for (i = 0; i < 10; i++) 10 { 11 cout << rand() << " "; 12 } 13 return 0; 14 }
第一次运行结果。
第二次运行结果,可以看成真正意义上的随机数。
当需要(0-x)的随机数时,只需要在 rand() % x 即可。
当需要(0-1)的小数随机数时,只需要 ( rand() % x ) /x 即可,其中 x 与精度有关,可取 x=100 小数后两位。
三、猜拳小游戏
1 #include<stdio.h> 2 #include<stdlib.h> 3 #include<time.h> 4 int main() 5 { 6 char x; 7 int a; 8 int b; 9 while (1) { 10 printf("请选择你要出的:\n"); 11 printf("a:剪刀\n"); 12 printf("b:石头\n"); 13 printf("c:布\n"); 14 printf("d:不玩了\n"); 15 16 scanf_s("%c%*c", &x); 17 18 switch (x) { 19 case 65 | 97: 20 x = 4; break; 21 case 66 | 98: 22 x = 7; break; 23 case 67 | 99: 24 x = 10; break; 25 case 68 | 100: 26 return 0; 27 default: 28 printf("error!"); 29 getchar(); 30 system("cls"); 31 return 0; 32 break; 33 } 34 srand((unsigned)time(null)); 35 a = rand() % 3; 36 b = (int)x + a; 37 38 printf("电脑出了"); 39 switch (a) { 40 case 0: 41 printf("剪刀\n\n"); break; 42 case 1: 43 printf("石头\n\n"); break; 44 case 2: 45 printf("布\n\n"); break; 46 } 47 48 printf("你出了"); 49 switch (x) { 50 case 4: 51 printf("剪刀\n\n"); break; 52 case 7: 53 printf("石头\n\n"); break; 54 case 10: 55 printf("布\n\n"); break; 56 } 57 58 printf("结果是:\n\n"); 59 if (b == 6 || b == 7 || b == 11)printf("你赢了!\n\n"); 60 if (b == 5 || b == 9 || b == 10)printf("电脑赢了!\n\n"); 61 if (b == 4 || b == 8 || b == 12)printf("平局!\n\n"); 62 63 system("pause>nul&&cls"); 64 } 65 return 0; 66 }
第一次。
第二次。
代码里x的值是考虑了不重复问题。
电脑a | 玩家x | 4剪刀 | 7石头 | 10布 |
0剪刀 | 4 | 7 | 10 |
1石头 | 5 | 8 | 11 |
2布 | 6 | 9 | 12 |
上一篇: python爬虫获取百度图片(没有精华,只为娱乐)
下一篇: Module的加载实现