写学习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 ...
随机推荐
- 基于Linux的系统排错
1.系统引导过程概述 2.系统异常及恢复 [1]grub系统引导 1)mbr上446字节丢失 模拟问题: dd if=/dev/zero? of=/dev/vda? bs=446? count=1? ...
- 性能测试工具JMeter 基础(五)—— 测试元件: 测试计划
测试计划的定义: 测试计划是测试脚本的容器,定义了要执行什么.怎么执行对测试做总体的设置,且都是从线程组开始执行 在测试计划中可自定义用户变量(User Defined Variables),可通过A ...
- Http协议 压缩
先说结论:Request和Response可以设置gzip压缩从而节省流量/带宽,这是一个不常见的问题.具体可见连接:HTTP 协议之压缩 最近测试代理服务器时,意外的发现使用urlopen请求百度首 ...
- Centos7最小化系统安装_配置
本文总结了作者使用centos最小化安装时,碰到的问题和解决方案. 网络问题.作者使用虚拟机安装时,网卡并没有激活.操作: 1 cd /etc/sysconfig/network-script 2 v ...
- Linux串口调试详解
测试平台 宿主机平台:Ubuntu 16.04.6 目标机:iMX6ULL 目标机内核:Linux 4.1.15 目标机添加串口设备 一般嵌入式主板的默认镜像可能只配置了调试串口,并用于 consol ...
- Cython 模块扩展 - 编程语言 替代实现 应用领域 汇总一览
Python 本身只是一种编程语言规范,可以使用其它编程语言实现它或扩展它:譬如:采有 Python C Java .Net 等重实现 Python,而采用 Python C/C++ C# Java ...
- IT人计算机网络浅析
LAN: 局域网 local Area Network WAN: 广域网 Wide Area Network WAN = LAN +LAN+....+LAN 多个LAN 组成 WAN OSI 七层协议 ...
- Redis集群的搭建及与SpringBoot的整合
1.概述 之前聊了Redis的哨兵模式,哨兵模式解决了读的并发问题,也解决了Master节点单点的问题. 但随着系统越来越庞大,缓存的数据越来越多,服务器的内存容量又成了问题,需要水平扩容,此时哨兵模 ...
- js 显示日期时间,时间过一秒加1
html: <div id="data"><font>2017年10月17日 15:11:11</font></span> js: ...
- shell--目录通配符
符号 说明 ? 匹配任一字符 * 匹配一个或多个字符 [a-z0-9] 类似于正则表达式, 若想匹配?可用[?] [!a-z] 类似于正则表达式[^a-z], 不匹配中括号中的内容 {string1, ...