#include <iostream>
#include <time.h>
#include <stdlib.h>
#include <cmath> using namespace std;
#define random(a,b) (rand() % (b-a+1))+ a
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
const int association = 70;//产生联想的概率
const int divergence = 29;//产生发散的概率
bool Forget = false;//是否会遗忘
const int lenth = 5; int main() {
srand(time(NULL));
int map[lenth][lenth];
for(int i = 0;i < lenth;++i) {
for(int j = 0;j < lenth;++j) {
map[i][j] = -1;
}
}
string show[lenth][lenth];
for(int i = 0;i < lenth;++i) {
for(int j = 0;j < lenth;++j) {
show[i][j] = "warn";
}
}
int x, y;//坐标点
int tempX, tempY;
bool first = false;//记录是否为第一次
int development;//记录发展的趋势
string learn[lenth] = {"a", "b", "c", "d", "e"};
string answer[lenth];
int i = 0;
while(true) {
while(true) {
if(!first) {//随机初始化坐标
i = 0;
x = random(0,lenth-1);
y = random(0,lenth-1);
map[x][y] = i;
show[x][y] = learn[i];
first = true;
++i;
}
else {
development = random(1,100);//随机出发展的趋势
if(development > 0 && development <= association) {//如果随机的发展趋势为百分之70,则进入联想模式
tempX = random(0,2) - 1;
x = x + tempX;
tempY = random(0,2) - 1;
y = y + tempY;
while((x < 0 || x >= lenth) || (y < 0 || y >= lenth)) {
x = x - tempX;
tempX = random(0,2) - 1;
x = x + tempX;
y = y - tempY;
tempY = random(0,2) - 1;
y = y + tempY;
}
map[x][y] = i;
show[x][y] = learn[i];
++i;
}
else if(development > association && development <= (association + divergence)) {//如果随机的发展趋势为百分之29,则进入发散模式
tempX = x;
x = random(0,lenth-1);
tempY = y;
y = random(0,lenth-1);
while(((x > (tempX - 1))&&(x < (tempX + 1)))||((y > (tempY - 1))&&(y < (tempY + 1)))){
x = random(0,lenth-1);
y = random(0,lenth-1);
}
map[x][y] = i;
show[x][y] = learn[i];
++i;
}
else {//是否遗忘
x = random(0,lenth-1);
y = random(0,lenth-1);
map[x][y] = -1;
show[x][y] = "warn";
++i;
Forget = true;
}
if(i >= lenth || Forget == true) {
break;
}
}
}
if(Forget == true) {
Forget = false;
first = false;
continue;
}
else {
break;
} }
for(int i = 0;i < lenth;++i) {
for(int j = 0;j < lenth;++j) {
if(map[i][j] != -1){
answer[map[i][j]] = show[i][j];
}
}
}
for(int i = 0;i < lenth;++i) {
cout << answer[i] << endl;
} return 0;
}

  

写学习abcde的简单AI(C++实现)的更多相关文章

  1. 炸金花游戏(3)--基于EV(期望收益)的简单AI模型

    前言: 炸金花这款游戏, 从技术的角度来说, 比德州差了很多. 所以他的AI模型也相对简单一些. 本文从EV(期望收益)的角度, 来尝试构建一个简单的炸金花AI. 相关文章: 德州扑克AI--Prog ...

  2. oracle学习 第一章 简单的查询语句 ——03

    1.1最简单的查询语句 例 1-1 SQL> select * from emp; 例 1-1 结果 这里的 * 号表示全部的列.它与在select 之后列出全部的列名是一样的.查询语句以分号( ...

  3. Python学习 - 编写一个简单的web框架(一)

    自己动手写一个web框架,因为我是菜鸟,对于python的一些内建函数不是清楚,所以在写这篇文章之前需要一些python和WSGI的预备知识,这是一系列文章.这一篇只实现了如何处理url. 参考这篇文 ...

  4. JSP学习笔记(三):简单的Tomcat Web服务器

    注意:每次对Tomcat配置文件进行修改后,必须重启Tomcat 在E盘的DATA文件夹中创建TomcatDemo文件夹,并将Tomcat安装路径下的webapps/ROOT中的WEB-INF文件夹复 ...

  5. Hibernate二次学习一----------Hibernate简单搭建

    因为博客园自带的markdown不太好用,因此所有markdown笔记都使用cmd_markdown发布 Hibernate二次学习一----------Hibernate简单搭建: https:// ...

  6. JAVA WEB学习笔记(三):简单的基于Tomcat的Web页面

    注意:每次对Tomcat配置文件进行修改后,必须重启Tomcat 在E盘的DATA文件夹中创建TomcatDemo文件夹,并将Tomcat安装路径下的webapps/ROOT中的WEB-INF文件夹复 ...

  7. arcpy地理处理工具案例教程-生成范围-自动画框-深度学习样本提取-人工智能-AI

    arcpy地理处理工具案例教程-生成范围-自动画框-深度学习样本提取-人工智能-AI 商务合作,科技咨询,版权转让:向日葵,135-4855_4328,xiexiaokui#qq.com 目的:对面. ...

  8. Spark学习笔记0——简单了解和技术架构

    目录 Spark学习笔记0--简单了解和技术架构 什么是Spark 技术架构和软件栈 Spark Core Spark SQL Spark Streaming MLlib GraphX 集群管理器 受 ...

  9. Html学习笔记(二) 简单标签

    标签的重点 标签的用途 标签在浏览器中的默认样式 <body>标签: 在网页上显示的内容 <p>标签: 添加段落 <hx>标签: 添加标题 标签一共有6个,h1.h ...

随机推荐

  1. MySQL-LSN

    查看lsn:   show engine innodb status Log sequence number 2687274848548    Log flushed up to 2687274848 ...

  2. SpringBoot笔记(7)

    一.单元测试 1.JUnit5简介 Spring Boot 2.2.0 版本开始引入 JUnit 5 作为单元测试默认库 作为最新版本的JUnit框架,JUnit5与之前版本的Junit框架有很大的不 ...

  3. RabbitMQ之消息模式1

    消息100%的投递 消息如何保障100%的投递成功? 什么是生产端的可靠性投递? 保障消息的成功发出 保障MQ节点的成功接收 发送端收到MQ节点(Broker)确认应答 完善的消息进行补偿机制 BAT ...

  4. Linux新加磁盘并挂载到目录

    步骤:1.分区  ----> 2.格式化  ----> 3.挂载 一.查看当前情况 1. 2. 二.磁盘分区 fdisk /dev/sdb 1.输入n,表示添加一个新的分区 2. e ex ...

  5. JS014. toFixed( )调试踩坑 - 浏览器思维 点常量 & 点运算符

    Number.prototype.toFixed( ) 在观察toFixed()丢失精度问题,和对toFixed()方法重写的调试过程时,发现toFixed()对Number的识别有它自己的规则,并找 ...

  6. Spring表达式

    一.SpEL 其中,直接写也可以赋值,' ' 单引号引起来后成为一个字符串对象,可以调用String的方法: 二.引用另外一个bean 装配这个类的bean: 1.第一种方法,property标签中使 ...

  7. 在linux查询本机的公网IP

    linux服务器查看公网IP信息的方法 最近在解决网络问题时,需要查看本机的出口公网IP信息,所以在网络上搜索和请求运维达人,获得如下两个方法: curl ifconfig.me 在linux系统中输 ...

  8. .NET 中的HTTP 3支持

    dotnet团队官方博客发布了一篇HTTP3的文章:HTTP/3 support in .NET 6.文章介绍了.NET 6 将预览支持HTTP3,.NET 7正式支持HTTP3,原因主要是HTTP/ ...

  9. PHP的LZF压缩扩展工具

    这次为大家带来的是另外一个 PHP 的压缩扩展,当然也是非常冷门的一种压缩格式,所以使用的人会比较少,而且在 PHP 中提供的相关的函数也只是对字符串的编码与解码,并没有针对文件的操作.因此,就像 B ...

  10. 小学生都能读懂的网络协议之:WebSocket

    目录 简介 webSocket vs HTTP HTTP upgrade header websocket的优点 webScoket的应用 websocket的握手流程 WebSocket API 总 ...