产生随机数与相应的猜拳小游戏
2018-09-01 05:38:05来源:博客园 阅读 ()
一、简介
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 |
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- C++生成随机数 2020-04-18
- C/C++产生随机数 2019-12-25
- c++实现文件复制并修改相应属性 2019-12-14
- C++随机数笔记 2019-10-31
- C++生成随机数 2019-10-08
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash