欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

产生随机数与相应的猜拳小游戏

程序员文章站 2022-07-05 14:31:16
一、简介 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