模拟算法:仿真的全过程,通过改变数学模型参数,进一步观察状态更改这些参数发生变化正当程序。

算法思路:利用随机函数来模拟不可预测发生在自然界。(srand() 和 rand()函数生成一个随机数)

模拟算法也就是将整个过程完完整整的走一遍。题目怎么叙述的,程序就怎么执行。

实例一:猜数字
计算机随机生成一个1-100的整数,用户推測,每次推測给出不同的提示。
代码:
#include <iostream>
#include <stdlib.h>
#include <time.h>
using namespace std;
int main()
{
srand(time(NULL));
int count=0;
int num = rand()%100 + 1;
int guess;
cout << "请输入推測的数值:";
cin >> guess;
do{
if (guess > num){
count++;
cout << "您猜的值大了\n";
cout << "请再次输入推測的数值:";
cin >> guess;
}else if (guess < num){
count++;
cout << "您猜的值小了\n";
cout << "请再次输入推測的数值:";
cin >> guess;
}
}while(guess != num);
count++;
cout << "猜中了! \n";
cout << "共猜了 " << count << " 次\n";
return 0;
}
执行结果:

实例二:模拟掷骰子游戏
由用户自己输入參与人数和骰子的个数。然后计算机随机生成每一粒骰子的点数然后统计每一个人的点数。

代码:
#include<iostream>
#include<stdlib.h>
#include<time.h>
using namespace std;
void play(int n);
void play(int n)
{
int i,m=0,t=0;
for(i=0; i<n; i++)
{
t=rand()%6+1;
m+=t;
cout << "第" << (i+1) << "粒骰子的点数为:" << t <<"\n";
}
cout << "总共" << m << "点\n";
}
int main()
{
int people,numbers;
do{
srand(time(NULL));
cout << "请输入參与的人数:";
cin >> people;
if(people == 0) break;
cout << "请输入骰子的数量:";
cin >> numbers;
if(numbers == 0) break;
for(int i=0; i<people; i++)
{
cout << "第 " << (i+1) << "位选手掷出的骰子情况为:\n";
play(numbers);
}
}while(1);
return 0;
}
执行结果:


注:

C++产生随机数的使用方法

1) 给srand()提供一个种子,它是一个unsigned int类型。

2) 调用rand(),它会依据提供给srand()的种子值返回一个随机数(在0到RAND_MAX之间);

3) 依据须要多次调用rand()。从而不间断地得到新的随机数;

4) 不管什么时候。都能够给srand()提供一个新的种子,从而进一步“随机化”rand()的输出结果。

产生一定范围随机数的通用表示公式

要取得[a,b)的随机整数,使用(rand() % (b-a))+ a;

要取得[a,b]的随机整数,使用(rand() % (b-a+1))+ a;

要取得(a,b]的随机整数,使用(rand() % (b-a))+ a + 1;

通用公式:a + rand() % n。其中a开始值,n范围是一个整数。

版权声明:本文博客原创文章,博客,未经同意,不得转载。

仿真算法数据结构与算法 C++实现的更多相关文章

  1. 检索算法 -- 数据结构与算法的javascript描述 第13章

    检索算法-如何在列表中查找特定的值. 顺序查找 从列表的第一个元素开始对列表元素逐个进行判断,直到找到了想要的结果,它属于暴力查找技巧的一种,在执行查找时可能会访问到数据结构里的所有元素. 代码: / ...

  2. 排序算法 -- 数据结构与算法的javascript描述 第12章

    排序是常见的功能,给定一组数据,对其进行排序. 在此之前,我们需要准备个基础工作--自动生成数组,并可以对该组数据做任何处理. /** * 测试类 ,数组 * @param numElements * ...

  3. 算法 & 数据结构——收纳箱算法???

    . 最近工作上有一个需求,需要将图片打包成图集,以便于让资源更紧凑,利用率更高,提升性能,游戏行内的同志应该很熟练这个操作.通常我们需要用一个app来完成这项工作,最出名的莫过于Texture Pac ...

  4. 前端开发周报: CSS 布局方式方式与JavaScript数据结构和算法

    前端开发周报:CSS 布局方式与JavaScript动画库 1.常见 CSS 布局方式详见: 一些常见的 CSS 布局方式梳理,涉及 Flex 布局.Grid 布局.圣杯布局.双飞翼布局等.http: ...

  5. [py]数据结构和算法-冒泡排序

    用Python实现的数据结构与算法 数据结构和算法可以培养一个人的逻辑思维(推荐几本书) 逻辑思维培养 严蔚敏的数据结构(排序 查找 列表 堆栈 队列 树的简单部分) 大话数据结构 数据结构与算法分析 ...

  6. 大数据技术之_16_Scala学习_13_Scala语言的数据结构和算法_Scala学习之旅收官之作

    第十九章 Scala语言的数据结构和算法19.1 数据结构(算法)的介绍19.2 看几个实际编程中遇到的问题19.2.1 一个五子棋程序19.2.2 约瑟夫问题(丢手帕问题)19.2.3 其它常见算法 ...

  7. 数据结构1:数据结构与算法C语言版分析概述

    本节开始将带领大家系统地学习数据结构,作为一门计算机专业大二学生的必修课程,该课程面对的目标人群为初步具备基本编程能力和编程思想的程序员(大一接触了 C 语言或者 C++).通过系统地学习数据结构,可 ...

  8. python 数据结构与算法之排序(冒泡,选择,插入)

    目录 数据结构与算法之排序(冒泡,选择,插入) 为什么学习数据结构与算法: 数据结构与算法: 算法: 数据结构 冒泡排序法 选择排序法 插入排序法 数据结构与算法之排序(冒泡,选择,插入) 为什么学习 ...

  9. 数据结构与算法【Java】02---链表

    前言 数据 data 结构(structure)是一门 研究组织数据方式的学科,有了编程语言也就有了数据结构.学好数据结构才可以编写出更加漂亮,更加有效率的代码. 要学习好数据结构就要多多考虑如何将生 ...

随机推荐

  1. 关于win10输入法ctrl+shift+f和idea组合键冲突的解决办法。

    先Ctrl+F,按住Ctrl,再按Shift+F. 因为win10的输入法热键无法关闭(在后期的版本中好像可以了,不过没更新),在IEDA中ctrl+shift+f组合键没法使用,可以按如下按键组合使 ...

  2. 正确理解Spring事务和数据库事务和锁

    Lock wait timeout exceeded; try restarting transaction解决方案 参考文章 Spring中@Transactional事务回滚 http://www ...

  3. ios开发网络学习AFN三:AFN的序列化

    #import "ViewController.h" #import "AFNetworking.h" @interface ViewController () ...

  4. mycat主从读写分离范例

    1.mycat二进制包安装 tar -zxvf Mycat-server-1.6.5-release-20180122220033-linux.tar.gzcd mycatmv mycat /opt/ ...

  5. linux下Oracle11g RAC搭建(一)

    linux下Oracle11g RAC搭建(一) 文档说明 作者    深蓝 项目 Visualbox下模拟RAC搭建(双节点)(Redhat5+Oracle11G) 环境 RedHat Enterp ...

  6. tig install ncursesw

    ./configure --prefix=/home/xxx/.local/ --with-ncursesw make[xxx$ ldd src/tig linux-vdso.so.1 => ( ...

  7. 微信开发学习日记(六):weiphp框架

    最近重点在看weiphp这个开源的第三方微信公众平台框架. 在网上找微信资料,找到了这个.很早之前,就初步学习了Thinkphp和Onethink2个开源框架,当看到weiphp是用这2个框架开发的时 ...

  8. GlobalMemoryStatus 和 GlobalMemoryStatusEx

    1.获取系统内存信息有2个api,分别是GlobalMemoryStatus和GlobalMemoryStatusEx.GlobalMemoryStatus函数可以在C语言里直接调用,但是Global ...

  9. Android 让文本输入框默认不获取焦点

    项目中有个检索功能,页面上有个EditText输入框,打开页面后,焦点默认在EditText上,这样的话软键盘默认就会显示出来,占据大半个屏幕. 后来想办法将这个给去掉了,原先考虑着将焦点赋给页面上的 ...

  10. php课程 6-24 字符串函数有哪些(复习)

    php课程 6-24 字符串函数有哪些(复习) 一.总结 一句话总结: 二.php课程 6-24 字符串函数有哪些(复习) 上次复习:--------------------------------- ...