写学习abcde的简单AI(C++实现)
#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++实现)的更多相关文章
- 炸金花游戏(3)--基于EV(期望收益)的简单AI模型
前言: 炸金花这款游戏, 从技术的角度来说, 比德州差了很多. 所以他的AI模型也相对简单一些. 本文从EV(期望收益)的角度, 来尝试构建一个简单的炸金花AI. 相关文章: 德州扑克AI--Prog ...
- oracle学习 第一章 简单的查询语句 ——03
1.1最简单的查询语句 例 1-1 SQL> select * from emp; 例 1-1 结果 这里的 * 号表示全部的列.它与在select 之后列出全部的列名是一样的.查询语句以分号( ...
- Python学习 - 编写一个简单的web框架(一)
自己动手写一个web框架,因为我是菜鸟,对于python的一些内建函数不是清楚,所以在写这篇文章之前需要一些python和WSGI的预备知识,这是一系列文章.这一篇只实现了如何处理url. 参考这篇文 ...
- JSP学习笔记(三):简单的Tomcat Web服务器
注意:每次对Tomcat配置文件进行修改后,必须重启Tomcat 在E盘的DATA文件夹中创建TomcatDemo文件夹,并将Tomcat安装路径下的webapps/ROOT中的WEB-INF文件夹复 ...
- Hibernate二次学习一----------Hibernate简单搭建
因为博客园自带的markdown不太好用,因此所有markdown笔记都使用cmd_markdown发布 Hibernate二次学习一----------Hibernate简单搭建: https:// ...
- JAVA WEB学习笔记(三):简单的基于Tomcat的Web页面
注意:每次对Tomcat配置文件进行修改后,必须重启Tomcat 在E盘的DATA文件夹中创建TomcatDemo文件夹,并将Tomcat安装路径下的webapps/ROOT中的WEB-INF文件夹复 ...
- arcpy地理处理工具案例教程-生成范围-自动画框-深度学习样本提取-人工智能-AI
arcpy地理处理工具案例教程-生成范围-自动画框-深度学习样本提取-人工智能-AI 商务合作,科技咨询,版权转让:向日葵,135-4855_4328,xiexiaokui#qq.com 目的:对面. ...
- Spark学习笔记0——简单了解和技术架构
目录 Spark学习笔记0--简单了解和技术架构 什么是Spark 技术架构和软件栈 Spark Core Spark SQL Spark Streaming MLlib GraphX 集群管理器 受 ...
- Html学习笔记(二) 简单标签
标签的重点 标签的用途 标签在浏览器中的默认样式 <body>标签: 在网页上显示的内容 <p>标签: 添加段落 <hx>标签: 添加标题 标签一共有6个,h1.h ...
随机推荐
- OpenCV 传统分割测试
github官网源文件:https://github.com/opencv/opencv/tree/master/samples/python 最好是先克隆整个仓库下来,再测试里面的:floodfil ...
- Django——ORM打印SQL
如果想打印ORM转换过程中的SQL,需要在settings.py中进行如下配置: LOGGING = { 'version': 1, 'disable_existing_loggers': False ...
- NOIP模拟39:树
他们说这题与之前树剖的一道叫染色的题类似,好像真的是这样. 就是我们考虑这样一件事,就是每一次染白都可以看作是给链上的点打一个时间戳,那么可以发现,如果相邻的两个点的时间戳不同,那么他们之间的 ...
- noip模拟测试50
考试过程:开题顺序1,2,3,做T1的时候我想到了要求的东西,就是分成尽量少的段使得每段之和>=k,但是我不会求,就打了个暴力走了,然后看T2,这题我觉得和之前做过的一道题比较像,因为我觉得\( ...
- 了解HTTP基本知识板块
一.HTTP 协议概述 HTTP协议采用了请求/响座模型. 客户端向服务器发送-个请求,请求头包含请求的方法.URT..协议版本.以以 及包含请求修饰符.客户信息和内容的类似于MIME的消息结构. 服 ...
- 远程线程注入突破SESSION 0
远程线程注入突破SESSION 0 SESSION 0 隔离 在Windows XP.Windows Server 2003,以及更老版本的Windows操作系统中,服务和应用程序使用相同的会话(Se ...
- Shell系列(22)- 字符截取命令awk
简介 awk是一个数据处理工具,相比于sed常常作用于一整行的处理,awk则比较倾向于将一行分成数个"字段"来处理 awk的流程是依次读取每一行数据,读取完一行数据后,进行条件判断 ...
- Linux系列(29) - rpm包命名规则(1)
RPM包命名规则 例如包名:httpd-2.2.15-15.el6.centsos.1.i686.rpm 软件包名-httpd 软件版本-2.2.15 发布的次数-15 el6.centos适合的Li ...
- requests接口自动化-excel参数化
在数据量大的时候,需要使用文件参数化. excel文件是其中一种. 安装xlrd读取excel文件.(这里是在pycharm安装) 发现选择豆瓣安装失败,阿里云安装成功. 准备excel文件,放在te ...
- JMeter主要元件
配置元件 http cookie管理器 http信息头管理器 http请求默认值 统一管理 快速切换测试环境 http cache管理器 静态资源 监听器元件 查看结果树 分析查看某个请求的详情 请求 ...