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

算法思路:利用随机函数来模拟不可预测发生在自然界。(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. [Now] Update an application hosted with Zeit’s Now

    Because now deploys are immutable, you can’t push changes to a running instance - you just push a ne ...

  2. 网易前端微专业,JavaScript程序设计基础篇:数组

    不论什么一种语言数组都是比較重要的,其作为一种基础对象应用非常多,如Java你肯定少不了集合(List,Map)这些.因此本篇主要记录JS的数组使用和经常用法.要点例如以下: 1,数组创建 两种方式: ...

  3. MIPS Instruction Set

    https://www.mips.com/develop/training-courses/mips-basic-training-course/ The MIPS64 Instruction Set ...

  4. [TypeScript] Find the repeated item in an array using TypeScript

    Say you have an array that has at least one item repeated. How would you find the repeated item. Thi ...

  5. 使用jquery-validationEngine框架,4步实现前端JS校验

    第1步: 引入CSS和JS      <script type="text/javascript" src="${base}/static/js/frontback ...

  6. style.height、offsetHeight、clientHeight、scrollHeight的差别

    style.height 包含元素的滚动栏,不包含边框 clientHeight 不包含元素的滚动栏和边框 offsetHeight 包含元素的滚动栏和边框 scrollHeight offsetHe ...

  7. 【codeforces 750C】New Year and Rating(做法2)

    time limit per test2 seconds memory limit per test256 megabytes inputstandard input outputstandard o ...

  8. 小强的HTML5移动开发之路(33)—— jqMobi基础

    一.什么是jqMobi jqMobi是由appMobi针对HTML5浏览器和移动设备开发的javascript框架,是个极快速的查询选择库,支持W3C查询. 版本 jqMobi源码最初在2012年1月 ...

  9. error: invalid abbreviation code [25] for DIE at 0x0000003e in Assertion failed: (*offset_ptr == end_prologue_offset), function ParsePrologue, file /S

    error: invalid abbreviation code [25] for DIE at 0x0000003e in '/Users/mac/Desktop/MYiosfiles/test/X ...

  10. 颜色转换:#hhhfff->UIColor (MHHexColoring)

    MHHexColoring为开发者快速获取想要的十六进制颜色(Hex Color) 查找16进制色码的网站:http://www.color-hex.com // 版权属于原作者 MHHexColor ...