哈喽大家好,我是iecne,本期为大家带来的是CPP/C++游戏设计教程的第①期—— 随机数 ,包教包会,快来看看吧!

大家都知道,初学C++或者各种语言,面对枯燥无比的题目,脑子要爆的感觉是十分难受的,不妨会想设计一款游戏玩玩,但是由于能力不足、不知道如何设计而放弃。而这一专栏将会教会你们如何设计一款简单的Cpp游戏点赞收藏关注评论支持以下博主,蟹蟹


目录

一.运用位置

1.随机数游戏

2.球类游戏

3.石头剪刀布(机)

二.rand( )的用法

1.rand的使用

2.随机数的生成

(1)0~100的生成

(2)1~100的生成

(3)a~b的生成

三.解决rand()函数生成的随机数每次都一样

四.总结

系列文章目录


一.运用位置

rand函数是一个可以取随机数的语句,他的运用是否的广,可以有以下运用位置

1.随机数游戏

    int right_number=rand()%100+1;  int left=1;int right=100;int a;cout<<"请猜,["<<left<<","<<right<<"]"<<endl;cin>>a;while(a!=right_number){if(a>=right_number) right=a;else         left=a;cout<<"请继续猜,["<<left<<","<<right<<"]"<<endl;cin>>a;}cout<<"恭喜小主,猜对啦!"<<endl;cout<<"正确答案:"<<right_number<<endl;

以上代码借鉴博主大姨妈V的随机数游戏


2.球类游戏

if(wofen+difen<180+rand()%60)
{Sleep(500);srand((unsigned)time(NULL));for(int i=1;i<=5;i++){int jilv=rand()%100;if(jilv<=30){int mingzhong=rand()%1000;int zl=(SSS3[a]-(SSSF[a1]/2)-10);if(mingzhong>=0 && mingzhong<=zl){wofen+=3;……

以上代码由作者原创小游戏Supreme basketball中篮球实战的代码


3.石头剪刀布(机)

      srand((unsigned)time(0));for (int i = 0; i < 10; i++) {j = rand() % 3;}switch (j) {case 0:setbase(0);break;case 1:setbase(1);break;case 2:setbase(2);break;}

以上代码由作者原创小游戏石头剪刀布中实战的代码


二.rand( )的用法

1.rand的使用

(1)rand()不需要参数,它会返回一个从0到最大随机数的任意整数,最大随机数的大小通常是固定的一个大整数

(2)如果你要产生0~99这100个整数中的一个随机整数,可以表达为:int num = rand() % 100;

这样,num的值就是一个0~99中的一个随机数了


2.随机数的生成

(1)0~100的生成

如果要产生0~100,则是这样:int num = rand() % 100;

实际如下:

int main()
{   int rand_test;rand_test = rand()%100;cout << rand_test << endl;return 0;
}

(2)1~100的生成

由于我们经常会以1为开头,所以普通的rand还是无法绝对做到我们的目的

如果要产生1~100,则是这样:int num = rand() % 100 +1;

实际如下:


(3)a~b的生成

一般情况下,rand() % (b-a+1)+ a   就表示 a~b 之间的一个随机整数

int main()
{int a, b;cin >> a >> b;int rand_test;rand_test = rand() % (b - a + 1) + a;cout << rand_test << endl;return 0;
}

三.解决rand()函数生成的随机数每次都一样

我们看下以下代码:

#include<iostream>
using namespace std;
int main()
{int a, b;a = 10;b = 100;int rand_test;for (int i = 1; i <= 10; i++){rand_test = rand() % (b - a + 1) + a;cout << rand_test << endl;}return 0;
}

指的是10~100中取10个不同的随机数

结果如下:

效果非常棒,但是我们再次执行一次

结果相同 ,所以rand()函数生成的随机数每次都一样

其实,函数rand是一个伪随机数,从固定的初始种子计算得出。所以每次运行获取到的随机数序列是相同的。要解决这一问题,需要设置一个随机数种子,一般用当前时间作为种子

所以我们还需要用到srand

srand((unsigned)time(NULL));

在随机数的前面加上此函数,调用时间作为种子,就可以实现真正的随机数

但是,切记:千万不要把此代码放入循环中,否则没用

rand()和srand()要一起使用,其中srand()用来初始化随机数种子,rand()用来产生随机数

因为默认情况下随机数种子为1,而相同的随机数种子产生的随机数是一样的,失去了随机性的意义,所以为使每次得到的随机数不一样,用函数srand()初始化随机数种子。srand()的参数,用time函数值(即当前时间),因为两次调用rand()函数的时间通常是不同的,这样就可以保证随机性了

完整代码:

#include<iostream>
using namespace std;
int main()
{int a, b;a = 10;b = 100;int rand_test;srand((unsigned)time(NULL));for (int i = 1; i <= 10; i++){rand_test = rand() % (b - a + 1) + a;cout << rand_test << endl;}return 0;
}

四.总结

本节课主要是讲解了srand和rand,至此随机数的思想博主已经彻彻底底分享完了,相信大家对这个逻辑有了一定的理解,大家可以自己动手敲敲代码,感受一下

包教包会,帅的人已然点赞收藏关注,而丑的人还在犹豫,被犹豫了,快三连吧!


系列文章目录

本期收录于博主的专栏——C++游戏设计教程,感兴趣的朋友们可以订阅,查看其它专栏。

C++游戏设计教程_iecne的博客-CSDN博客

C++游戏设计教程(1) 随机数


感谢每一个观看本篇文章的朋友,更多精彩敬请期待:iecne的博客_CSDN博客-C++保姆级入门教程领域博主

文章存在借鉴,如有侵权请联系修改删除!

【C++游戏设计】 rand随机数的设置相关推荐

  1. 【C++游戏设计】 通过函数设置字体的颜色

    哈喽大家好,我是iecne,本期为大家带来的是CPP/C++游戏设计教程的第③期-- 字体的颜色 ,包教包会,快来看看吧! 大家都知道,初学C++或者各种语言,面对枯燥无比的题目,脑子要爆的感觉是十分 ...

  2. 2021中国游戏设计 高考报考指南+考研指南【笔记】

    文章内容只做本人学习使用,内容来源于b站,感兴趣的可以自行去原视频看一下: https://www.bilibili.com/video/BV1KV411x7UF 前言: 报考需谨慎,内容仅供参考. ...

  3. 【C++游戏设计】用颜色原理打印平面地图

    哈喽大家好,我是iecne,本期为大家带来的是CPP/C++游戏设计教程的第④期-- 用颜色原理打印平面地图 ,包教包会,快来看看吧! 大家都知道,初学C++或者各种语言,面对枯燥无比的题目,脑子要爆 ...

  4. java毕业设计——基于Java+Java ME的无线网络移动端的俄罗斯方块游戏设计与实现(毕业论文+程序源码)——俄罗斯方块游戏

    基于Java+Java ME的无线网络移动端的俄罗斯方块游戏设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于Java+Java ME的无线网络移动端的俄罗斯方块游戏设计与实现,文章末尾附有 ...

  5. ​基于STM32F407的五子棋游戏设计​

    本博客为资源:基于STM32F407的五子棋游戏设计内的说明文档. 目录 一.设计目标 三.设计方案 1.游戏模式 2.游戏过程 3.游戏设计 四.硬件配置 1.TFT-LCD液晶屏模块 (1)工作原 ...

  6. 基于java的俄罗斯方块小游戏设计(含源文件)

    欢迎添加微信互相交流学习哦! 项目源码:https://gitee.com/oklongmm/biye 题 目          小游戏开发 摘    要     俄罗斯方块是我们最常见的游戏之一,该 ...

  7. 人工智能在游戏设计中的应用

    人工智能游戏的快速发展,为计算机游戏产业提供了新的机遇,目前人工智能技术已经成为优秀计算机游戏开发中不可缺少的部分. 这里首先介绍人工智能游戏的概念以及基本的游戏人工智能技术,然后介绍游戏角色的指导与 ...

  8. 【java毕业设计】基于java+swing+GUI的连连看游戏设计与实现(毕业论文+程序源码)——连连看游戏

    基于java+swing+GUI的连连看游戏设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于java+swing+GUI的连连看游戏设计与实现,文章末尾附有本毕业设计的论文和源码下载地址哦 ...

  9. Java课程设计——挖地雷游戏设计报告

    源文件: 大学生Java课程设计--挖地雷游戏设计报告源文件-其它文档类资源-CSDN文库 目 录 摘 要. 1 一.引言. 2 1.设计任务和基本要求. 2 二.报告正文. 3 1.需求分析. 3 ...

最新文章

  1. 关于ASP.NET 中站点地图sitemap 的使用【转xugang】
  2. python open找不到文件的原因_浅谈python在提示符下使用open打开文件失败的原因及解决方法...
  3. 聚焦点showModalDialog的一些方法
  4. oracle rac升级openssh,升级OpenSSH详细步骤
  5. bool python 运算_python中的布尔操作
  6. 2021最新4合1即时通讯IM源码-服务端+PC+WEB+安卓+IOS完整原生源码
  7. FastDFS介绍与安装配置
  8. 一键解决WPS中的VBA支持库安装问题
  9. 保存的离线网页总是自动跳转
  10. 信用卡分期年化利率计算方法
  11. 国内 OA 办公自动化系统 现状
  12. 威斯康星大学计算机科学教授,UW机器学习和数据科学活动吸引了国际知名的计算机科学家...
  13. 浏览器打开时总是hao123.com的网站解决办法
  14. nfcwriter下载 ios_被苹果封杀至今的下载神器,更新适配iOS 13系统
  15. linux bin sh命令,linux shell中#!bin/sh的理解
  16. Frangi2D滤波详解
  17. Mac小技巧—如何查看 Mac 的关机和重启历史
  18. 【思维导图怎么画】万彩脑图大师教程 | 插入动画图标
  19. 可以带着游泳的耳机、游泳听歌的运动耳机推荐
  20. 2021-2027全球与中国轧辊弯曲机市场现状及未来发展趋势

热门文章

  1. 用mysql查询出的数据对电话号进行脱敏处理
  2. [DG]oracle12cr2 RAC + DG(2+1)
  3. HLSL自定义渲染特效之完美攻略(中)
  4. 时间序列模型 (五): 趋势外推预测方法
  5. 说说摩拜单车的骑后感
  6. 如何办理进出口退税的手续?
  7. android 属性动画高级,Android高级UI开发(二十五)属性动画实战案例之流浪大师与乔帮主...
  8. 基于 java 使用 POI 操作 excel 导出限制某些单元格可编辑和单元格下拉列表有效性
  9. 两次验证后,西门子又在德国建起了首个电气化公路
  10. selenium-使用当前浏览器打开