#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. 解锁 VS Code 更多可能性,轻松入门 WebView

    作者:HelloGitHub-小夏 说起 VS Code 大家普遍印象应该都差不多是这样:不就是个编辑器嘛,最主要的还是 coding 的快感咯. 里面很多功能都应该是围绕如何提高 coding 效率 ...

  2. golang 模板 html/template与text/template

    html模板生成: html/template包实现了数据驱动的模板,用于生成可对抗代码注入的安全HTML输出.它提供了和text/template包相同的接口,Go语言中输出HTML的场景都应使用t ...

  3. MapperScannerConfigurer之sqlSessionFactoryBeanName注入方式

    Spring整合Mybatis时,项目启动时报错:(MapperScannerConfigurer之sqlSessionFactoryBeanName注入方式) pringframework.bean ...

  4. openswan发送状态机分析

    openswan发送状态机分析 1. 函数调用关系 2. 函数说明 如果按用户空间.内核空间划分的话,此部分代码更多是运行在内核空间的. 2.1 ipsec_tunnel_init_devices() ...

  5. js 点击复制文字

    复制input里面的文字 html: <input id="content" class="form-control" type="text&q ...

  6. TCL、华星光电和中环股份,如何在一条生态链上领跑?

    聚众智.汇众力.采众长. "我们决心用五年时间,将TCL科技和TCL实业做到真正的世界500强,将智能终端.半导体显示.半导体光伏三大核心产业力争做到全球领先,将半导体材料等其他产业做到中国 ...

  7. 找不到方法:“Void System.Data.Objects.ObjectContextOptions.set_UseConsistentNullReferenceBehavior(Boolean)

    找不到方法:"Void System.Data.Objects.ObjectContextOptions.set_UseConsistentNullReferenceBehavior(Boo ...

  8. Android学习记录(一)——安装Android Studio

    "工欲善其事必先利其器"学习安卓开发的第一步,安装Android Studio. 一.什么是Android Studio? Android Studio 是谷歌推出的一个Andro ...

  9. obs软件mac设置

    1 远程电脑软件teamview或者向日葵 远程mac电脑会时黑屏或连不上, 需要设置系统偏好->设置软件权限 2 设置obs 显示不出画面或声音,也需要在系统偏好设置obs的权限(首先打开OB ...

  10. 解决下载的css样式文件在同一排的问题

    一.将样式文件里的所有内容复制到word里 Ctrl+F查找替换,将所有分号;替换成;^p 小提示:在word里^p表示回车 二.将央视文件里的所有反括号}进行替换替换成}^p然后将代码整个粘贴回样式 ...