写学习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 ...
随机推荐
- 解决移动端click事件300ms延迟的问题
方法1.部分浏览器的<meta>标签加上width=device-width就能解决. 方法2.引入fastclick.js库 <!DOCTYPE html> <html ...
- 取消Ubuntu开机硬盘自检
修改/etc/fstab文件,最后一列全改为0,测试能正常启动,尚未出现再次自检的情况 sudo gedit /etc/fstab
- 速查列表:Apache SkyWalking OAL 的 域(Scopes)
OAL简介 在流模式(Streaming mode)下,SkyWalking 提供了 观测分析语言(Observability Analysis Language,OAL) 来分析流入的数据. OAL ...
- 最长回文子序列---DP
问题描述 给定一个字符串s,找到其中最长的回文子序列.可以假设s的最大长度为1000. 解题思路 1.说明 首先要弄清楚回文子串和回文子序列的区别,如果一个字符串是"bbbab", ...
- 剑指 Offer 31. 栈的压入、弹出序列
剑指 Offer 31. 栈的压入.弹出序列 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序.假设压入栈的所有数字均不相等.例如,序列 {1,2,3,4,5} 是某 ...
- Windows下Rancher复制Pod内文件到本地
Rancher 未提供直接获取 Pod 内文件的工具(如果有请评论告知下,蟹蟹),但提供了 Rancher 的 CLI 客户端,通过 CLI 可以调用 k8s 的 CLI (kubectl) 命令来操 ...
- C# 实现图片上传
C# 实现图片上传 C#实现图片上传: 通过页面form表单提交数据到动作方法,动作方法实现保存图片到指定路径,并修改其文件名为时间格式 页面设置 这里使用的模板MVC自带的模板视图 <h2&g ...
- Django——后台管理
1.要使用Django-admin后台的前提 INSTALLED_APPS = [ 'simpleui', 'django.contrib.admin', #必须有这一项 'django.contri ...
- Appium自动化(11) - 详解 Applications 类里的方法和源码解析
如果你还想从头学起Appium,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1693896.html 前言 Applications 类 ...
- iframe 内容适用高度
HTML: <div class="content"> <iframe id="frameObj" src="链接" fr ...