C++产生随机数的例题:投骰子的随机游戏
用例题来理解
功能分块
一、rollDice()函数:负责模拟投骰子,计算和数并输出和数
二、rand()函数:求出并返回一个伪随机数。
伪随机数:你可以写一个循环,每次调用rand函数产生一个随机数,你运行这个程序会产生一系列随机数,当你运行第二次的时候会发现产生的随机数序列和第一次的一模一样,这就叫做伪随机数,看起来产生的数都挺随机的,其实就是按顺序输出那相同的数序列而已。
输出真随机数的办法:srand()函数
为什么每次运行输出的伪随机数序列都一样?
因为rand()函数产生一系列伪随机数的初始起点相同,要想重新初始化rand函数,就需要给rand函数设置一个种子,这个种子可以让rand函数产生不同的伪随机数序列。例如,假设一开始循环调用rand函数(此时种子为0)输出:1,3,100,23,第二次运行程序输出的还是1,3,100,23,然后我重新设置一个种子为3,再运行程序输出就为:2,998,6,89。
如何用srand()函数设置种子?
只需要在调用rand()函数之前加上:srand(seed); 其中seed为键盘输入的整数。
srand函数会将种子seed传递给rand函数,从而达到更新输出随机数序列的目的。
代码:
#include <iostream>
#include <cstdlib>
using namespace std;enum GameStatus{WIN,LOSE,PLAYING};
int rollDice();
int main(){unsigned seed;int sum;int point;GameStatus status;cout<<"请输入一个产生随机数种子:";cin>>seed; //输入随机数种子 srand(seed); //将种子传递给rand() sum=rollDice(); //第一轮投骰子、计算和数 //cout<<"sum="<<sum<<endl;switch(sum){case 7:case 11: status=WIN;break;case 2:case 3:case 12: status=LOSE;break;default:status=PLAYING;point=sum;cout<<"point="<<point<<endl;break;}while(status==PLAYING){sum=rollDice();//cout<<"sum="<<sum<<endl;if(sum==point){status=WIN;}if(sum==7){status=LOSE;} } if(status==WIN){cout<<"You Win!"<<endl;}else cout<<"You Lose."<<endl;return 0;
}//掷骰子2次并求出和
int rollDice(){int a;int b;int sum;a=1+rand()%6;b=1+rand()%6;sum=a+b;cout<<"sum="<<a<<"+"<<b<<"="<<sum<<endl;return sum;
}
C++产生随机数的例题:投骰子的随机游戏相关推荐
- 习题3.3投骰子的随机游戏
/* 题目:每个骰子有六面,点数分别为1,2,3,4,5,6.游戏者在开始输入一个无符号整数,作为产生随机数的种子. 每次投两次骰子,第一轮如果和数为7或11则为胜,游戏结束:和数为2,3或12则为败 ...
- C++投骰子的随机游戏
#include <iostream> #include <cstdlib> using namespace std; int RollDice() {int die1 = 1 ...
- 1.投骰子的随机游戏
- 投骰子游戏(C++)
每个骰子有六面,点数分别为1.2.3.4.5.6 游戏者在程序开始时输入一个无符号整数,作为产生随机数的种子 每轮投两次骰子,第一轮如果和数为7或11则为胜,游戏结束; 和数为2.3或12则为负,游戏 ...
- 抱歉,Xposed真的可以为所欲为——4.猜拳投骰子你能赢算我输
抱歉,Xposed真的可以为所欲为--4.猜拳投骰子你能赢算我输 标签: 2018 一句话概括本文 人品大法利用Xposed Hook掉微信猜拳和投骰子,让你无需再担忧拿外卖和搞卫生. 引言 关于这节 ...
- 抱歉,Xposed真的可以为所欲为——4.猜拳投骰子你能赢算我输(转载)
一句话概括本文 人品大法利用Xposed Hook掉微信猜拳和投骰子,让你无需再担忧拿外卖和搞卫生. 引言 关于这节,我是看代码看到头皮发麻,逆向APP并没有想想中的简单, 特别是微信这种,要投入的学 ...
- Java类的编写实例(一 )SnakeEyes 投骰子中出现蛇眼(双幺)的次数 如何创建新的类和成员
初学者编写一个只包含main方法的单一类,是一个很小但是完整的程序.这样的程序通常使用Java类库中预定义的类来实例化对象,然后使用这些对象提供的服务.尝试编写新的程序,用到的类不完全是Java类库中 ...
- Python投骰子小游戏
今天我们用Python来实现一个投骰子小游戏,这个小游戏比之前写的要复杂一点点,不过大家不用担心,只要大家掌握了基本的语句就可以写出来了 游戏具体内容如下: #投骰子 #玩两个骰子 : 1-6 #1. ...
- python投掷骰子实验实验结论_博饼伤我心我,决定用Python对投骰子(色子)做数据分析...
pygal 是非常不错的 python 可视化包,它可以生成矢量图,从而在不同尺寸的屏幕上都可以获得良好的显示效果.具体安装使用请参考官方文档.今天小狼举个投骰子的栗子,看一下不同点数的概率分布情况. ...
最新文章
- 智能手机相机测试中的功能测试和性能测试
- 图解matlab基本操作
- SpringBoot+MySql+ElementUI实现一对多的数据库的设计以及增删改查的实现
- 【Python】疫情卷土重来?Python可视化带你追踪疫情的最新动态
- 网易应用创新开发者大赛成功在杭举办,十强队伍现场比拼
- Spring框架—SpringBean源码分析
- python--字符/文本编码解码笔记
- pytorch中unsqueeze()函数理解
- android dialog 点击确定不消失,AlertDialog点击按钮不消失的实现方法
- linux--切换ipython解释器到python3
- python-requests数据驱动延伸
- 数据结构--------二叉排序树
- 仿真proteus8.7安装
- 特斯拉充电电流设置多大_特斯拉满电状态517公里,实际使用500公里。三种充电方式比较...
- photoshop做立体字完整的图文版教程
- OC 中 覆盖属性会有提示Auto property synthesis will not synthesize property 'delegate'
- 上海落户计算机水平毕业研究生,2021上海积分落户应届毕业生直接落户上海
- 2023-02-04 用Orca替换MySQL的优化器
- 科学的工作方法—PDCA循环工作法
- 在线免费体验的文字识别接口
热门文章
- PCI总线的旧计算机,游戏卡成幻灯片 旧电脑升级显卡应该注意什么?
- ssm+Vue计算机毕业设计虚拟问诊系统(程序+LW文档)
- ssm+Vue计算机毕业设计益学(程序+LW文档)
- hs8346v5联通 说明书_请教hs8546v5更改华为界面正确方式
- 企业如何利用小程序引流?小程序常见的4个引流方法
- 题目内容: 你的程序要读入一个整数,范围是[-100000,100000]。然后,用汉语拼音将这个整数的每一位输出出来。 如输入1234,则输出: yi er san si 注意,每个字的拼音
- DKMS解决nvidia-smi驱动丢失的问题
- 好看动漫+电影+电视剧分享
- 播客49:Lyle Troxell
- 回忆2018年高教杯数学建模大赛