当前位置: 首页 > news >正文

设计模式12:状态模式

 系列总链接:《大话设计模式》学习记录_net 大话设计-CSDN博客

参考:设计模式之状态模式 (C++ 实现)_设计模式的状态模式实现-CSDN博客

1.概述

      状态模式允许一个对象在其内部状态改变时改变其行为。对象看起来像是改变了其类。使用状态模式可以将状态的相关行为放在各个状态类中,从而实现状态切换的灵活性和可扩展性。

       用例子来说明,小明是个大学生(对象),简化其状态为:困,饿,饱;简化行为:吃饭,睡觉,打王者;默认情况下小明的行为和状态之间的关系会有偶然性,所以会存在逻辑上的if-else组合,要考虑地全面,这分支无疑会比较多,并且可以出错。如果从状态模式处理小明状态和行为的逻辑问题,可以把小明的状态抽象为状态类(State),各种具体的状态定为其的继承类(ConcreteState),小明具体如何在行为和状态间切换的场景类(Context)。这样会比较清晰,各自的状态类下和其相关的行为会比较清晰;如果想新增状态类,也比较方便。

2.结构与实现

结构:

状态模式主要由以下几个部分构成:

  1. Context (上下文):持有一个具体的状态对象,并在状态之间切换。
  2. State (状态接口):定义一个接口用于在具体状态中实现不同的行为。
  3. ConcreteState (具体状态):实现状态接口的具体类,每个状态都有自己的行为。

实现:

参照概述的中例子,实现如下:

State.h:

#ifndef STATE_H
#define STATE_H#include <QDebug>class People;class State
{
public:State() {}virtual void sleep(People* xiaoming)=0;virtual void eat(People* xiaoming)=0;virtual void playWangzhe(People* xiaoming)=0;
};//疲劳
class tiredState : public State
{
public:tiredState(){}void sleep(People* people);void eat(People* people);void playWangzhe(People* people);
};//饥饿
class hungryState : public State
{
public:hungryState(){}void sleep(People* people);void eat(People* people);void playWangzhe(People* people);
};//饱
class fullState : public State
{
public:fullState(){}void sleep(People* people);void eat(People* people);void playWangzhe(People* people);
};#endif // STATE_H

State.cpp:

#include "State.h"
#include "People.h"void tiredState::sleep(People *people)
{qDebug() << "tired, go to sleeping and hungry.";people->setState(new hungryState());
}void tiredState::eat(People *people)
{qDebug() << "tired, no want to eat...";
}void tiredState::playWangzhe(People *people)
{qDebug() << "tired, no want to play...";
}void hungryState::sleep(People *people)
{qDebug() << "hungry, no want to sleep...";
}void hungryState::eat(People *people)
{qDebug() << "hungry, go to eat and full.";people->setState(new fullState());
}void hungryState::playWangzhe(People *people)
{qDebug() << "hungry, no want to play...";
}void fullState::sleep(People *people)
{qDebug() << "full, no want to sleep...";
}void fullState::eat(People *people)
{qDebug() << "full, no want to eat...";
}void fullState::playWangzhe(People *people)
{qDebug() << "full, go to play wangzhe and tired.";people->setState(new tiredState());
}

People.h:

#ifndef PEOPLE_H
#define PEOPLE_H#include "State.h"class People
{
public:People() {state = new tiredState();}~People(){delete state;}void setState(State* newState){delete state;state = newState;}void play();void sleep();void eat();private:State* state;
};
#endif // PEOPLE_H

People.cpp:

#include "People.h"
void People::play()
{state->playWangzhe(this);
}void People::sleep()
{state->sleep(this);
}void People::eat()
{state->eat(this);
}

main.cpp:

#include <QCoreApplication>
#include "People.h"int main(int argc, char *argv[])
{QCoreApplication a(argc, argv);People* xiaoming = new People();xiaoming->eat();xiaoming->play();xiaoming->sleep();xiaoming->eat();xiaoming->play();xiaoming->eat();delete xiaoming;return 0;
}

运行效果:

tired, no want to eat...
tired, no want to play...
tired, go to sleeping and hungry.
hungry, go to eat and full.
full, go to play wangzhe and tired.
tired, no want to eat...

3.应用

状态机,游戏开发、网络协议处理、用户界面

4.优缺点及适用环境

优点:

  1. 简化对象的实现:通过将不同的状态逻辑分离到不同的类中,可以使原本复杂的条件语句变得更加简单明了。
  2. 符合开闭原则:当需要增加新的状态时,只需添加新的状态类而无需修改现有的代码,提高了系统的可扩展性。
  3. 提高内聚性:每个状态的行为被封装在一个单独的类中,增强了模块化和内聚性。
  4. 清晰的状态转换:状态模式使得状态之间的转换更加明确和易于管理。

缺点:

  1. 可能引入过多的类:对于每一个状态都需要创建一个新的类,这可能会导致系统中有过多的小类,增加了复杂度。
  2. 状态爆炸问题:如果状态之间存在多种组合,那么将会产生大量的状态类,维护起来较为困难。
  3. 上下文与状态之间的耦合:状态对象通常依赖于上下文对象,反之亦然,这可能导致较高的耦合度。

应用环境:

  • 当一个对象在它的生命周期中需要根据不同的状态表现出不同的行为时。
  • 当状态转换的逻辑复杂,使用多个条件语句来处理会使得代码难以理解和维护时。
  • 当系统中存在大量相似但又有些许差异的状态或行为时,可以利用状态模式来减少重复代码并提高灵活性。
  • 在有限状态机(FSM)中,状态模式是一个常见的选择,用于建模具有不同状态和事件驱动转换的系统。

综上所述,状态模式适用于那些有明显状态变化并且这些状态变化会导致行为变更的情况,尤其是在你希望保持代码整洁、易于扩展的情况下。

相关文章:

设计模式12:状态模式

系列总链接&#xff1a;《大话设计模式》学习记录_net 大话设计-CSDN博客 参考&#xff1a;设计模式之状态模式 (C 实现)_设计模式的状态模式实现-CSDN博客 1.概述 状态模式允许一个对象在其内部状态改变时改变其行为。对象看起来像是改变了其类。使用状态模式可以将状态的相…...

AI @国际象棋世界冠军赛: 从棋盘到科研创新之路

点击屏末 | 阅读原文 | 在小红书和 Google 谷歌回顾 WCC...

LeetCode刷题day29——动态规划(完全背包)

LeetCode刷题day29——动态规划&#xff08;完全背包&#xff09; 377. 组合总和 Ⅳ分析&#xff1a; 57. 爬楼梯&#xff08;第八期模拟笔试&#xff09;题目描述输入描述输出描述输入示例输出示例提示信息 分析&#xff1a; 322. 零钱兑换分析&#xff1a; 279. 完全平方数分…...

C++对象数组对象指针对象指针数组

一、对象数组 对象数组中的每一个元素都是同类的对象&#xff1b; 例1 对象数组成员的初始化 #include<iostream> using namespace std;class Student { public:Student( ){ };Student(int n,string nam,char s):num(n),name(nam),sex(s){};void display(){cout<&l…...

主曲率为常数时曲面分类

主曲率为常数 ⇔ K , H \Leftrightarrow K,H ⇔K,H 为常数&#xff0c;曲面分类&#xff1a; 1.若 k 1 k 2 0 k_1k_20 k1​k2​0,则 S S S为全脐点曲面——平面的一部分&#xff1b; 2.若 k 1 k 2 ≠ 0 k_1k_2\neq0 k1​k2​0,则 S S S为全脐点曲面——球面的一部分&…...

单片机:实现HC-SR04超声波测距(附带源码)

使用单片机实现 HC-SR04 超声波测距模块 的功能&#xff0c;通常用于测量物体与超声波传感器之间的距离。HC-SR04 模块通过发射超声波信号并测量其返回时间来计算距离。单片机&#xff08;如 STM32、51 系列、Arduino 等&#xff09;可用来控制该模块的工作&#xff0c;并处理返…...

分布式全文检索引擎ElasticSearch-数据的写入存储底层原理

一、数据写入的核心流程 当向 ES 索引写入数据时&#xff0c;整体流程如下&#xff1a; 1、客户端发送写入请求 客户端向 ES 集群的任意节点&#xff08;称为协调节点&#xff0c;Coordinating Node&#xff09;发送一个写入请求&#xff0c;比如 index&#xff08;插入或更…...

mfc140u.dll是什么文件?如何解决mfc140u.dll丢失的相关问题

遇到“mfc140u.dll文件丢失”的错误通常影响应用程序的运行&#xff0c;这个问题主要出现在使用Microsoft Visual C环境开发的软件中。mfc140u.dll是一个重要的系统文件&#xff0c;如果它丢失或损坏&#xff0c;会导致相关程序无法启动。本文将简要介绍几种快速有效的方法来恢…...

ChatGPT生成接口测试用例(一)

用ChatGPT做软件测试 接口测试在软件开发生命周期中扮演着至关重要的角色&#xff0c;有助于验证不同模块之间的交互是否正确。若协议消息被恶意修改&#xff0c;系统是否能够恰当处理&#xff0c;以确保系统的功能正常运行&#xff0c;不会出现宕机或者安全问题。 5.1 ChatGP…...

Jenkins 中 写 shell 命令执行失败,检测失败问题

由于项目的 依赖复杂&#xff0c;随着版本的增多&#xff0c;人工操作&#xff0c;手误几率太大&#xff0c;我们选取kenins 来自动化发布、更新。 这里主要解决&#xff0c;发布 的 每个阶段&#xff0c;确保每个阶段执行成功。 比如&#xff1a; js 运行&#xff0c;…...

Dot Foods EDI 需求分析及对接流程

Dot Foods 是一家美国领先的食品和非食品产品的中间批发分销商&#xff0c;主要为食品服务、零售和分销行业的客户提供服务&#xff0c;是北美大型食品中间分销商之一。Dot Foods &#xff08;以下简称 Dot&#xff09;的业务模式是通过整合多个供应商的产品&#xff0c;为客户…...

数据特性库 前言

文章目录 一、num-traits库简介二、核心功能三、更新功能四、使用方式五、应用示例六、结论 一、num-traits库简介 num-traits是Rust编程语言中的一个开源库&#xff0c;专注于为数值类型提供一系列的数学运算特性和接口。它支持泛型数学计算&#xff0c;允许开发者在不指定具…...

项目授权无法正常操作的解决方法

概述 在非saas环境的项目中&#xff0c;授权页面的接口不需要token&#xff0c;但是在某些时候会导致页面无法正常操作&#xff0c;暂时用该文档中的解决方法来处理&#xff0c;后续会修复该问题。 现象描述 登录时报未授权跳转至该页面&#xff0c;有时该页面会弹出登录超时对…...

python学opencv|读取图像(十七)认识alpha通道

【1】引言 前序学习进程中&#xff0c;我们已经掌握了RGB和HSV图像的通道拆分和合并&#xff0c;获得了很多意想不到的效果&#xff0c;相关链接包括且不限于&#xff1a; python学opencv|读取图像&#xff08;十二&#xff09;BGR图像转HSV图像-CSDN博客 python学opencv|读…...

WSL2安装到自定义盘教程(非先安装后打包)

step1&#xff1a;环境配置 按照官方教程从头到尾配置一遍&#xff0c;直到从微软商店下载好Ubuntu20.04为止 step2&#xff1a;拷贝下载内容 使用微软商店下载的应用安装包会默认保存在C:\Program Files\WindowsApps目录下 在该目录下找到以CanonicalGroupLimited开头的文…...

环境变量的知识

目录 1. 环境变量的概念 2. 命令行参数 2.1 2.2 创建 code.c 文件 2.3 对比 ./code 执行和直接 code 执行 2.4 怎么可以不带 ./ 2.4.1 把我们的二进制文件拷贝到 usr/bin 路径下&#xff0c;也不用带 ./ 了 2.4.2 把我们自己的路径添加到环境变量里 3. 认识PATH 3.…...

【python】OpenCV—Image Moments

文章目录 1、功能描述2、图像矩3、代码实现4、效果展示5、完整代码6、涉及到的库函数cv2.moments 7、参考 1、功能描述 计算图像的矩&#xff0c;以质心为例 2、图像矩 什么叫图像的矩&#xff0c;在数字图像处理中有什么作用&#xff1f; - 谢博琛的回答 - 知乎 https://ww…...

优化 HTTP 接口请求:缓存策略与实现方法

前言 在前端开发中&#xff0c;HTTP 请求的处理是至关重要的一环。Axios 作为一个流行的 HTTP 客户端&#xff0c;其简洁性和灵活性使得它广受开发者青睐。然而&#xff0c;为了优化应用性能和提升用户体验&#xff0c;合理地缓存请求结果显得尤为重要。本文将深入探讨如何在 …...

图形 3.3 曲面细分与几何着色器_大规模草渲染

细分后的顶点曲面细分与几何着色器 大规模草渲染 B站视频&#xff1a;图形 3.3 曲面细分与几何着色器 大规模草渲染 文章目录 细分后的顶点曲面细分与几何着色器 大规模草渲染着色器执行顺序曲面细分着色器概述曲线和曲面相关概念输入与输出总体流程Hull Shader常量外壳着色器…...

shell8

until循环(条件为假的时候一直循环和while相反) i0 until [ ! $i -lt 10 ] doecho $i((i)) done分析 初始化变量&#xff1a; i0&#xff1a;将变量i初始化为0。 条件判断 (until 循环)&#xff1a; until [ ! $i -lt 10 ]&#xff1a;这里的逻辑有些复杂。它使用了until循环…...

嵌入式驱动RK3566 HDMI eDP MIPI 背光 屏幕选型与调试提升篇-eDP屏

eDP是嵌入式显示端口&#xff0c;具有高数据传输速率&#xff0c;高带宽&#xff0c;高分辨率、高刷新率、低电压、简化接口数量等特点。现大多数笔记本电脑都是用的这种接口。整个eDP是很复杂的&#xff0c;这里我们不讲底层原理&#xff0c;我们先掌握如何用泰山派来驱动各种…...

2024年华为OD机试真题-字符串分割-C++-OD统一考试(E卷)

最新华为OD机试考点合集:华为OD机试2024年真题题库(E卷+D卷+C卷)_华为od机试题库-CSDN博客 每一题都含有详细的解题思路和代码注释,精编c++、JAVA、Python三种语言解法。帮助每一位考生轻松、高效刷题。订阅后永久可看,发现新题及时跟新。 题目描述: 给定非空字符串…...

图书馆管理系统(三)基于jquery、ajax

任务3.4 借书还书页面 任务描述 这部分主要是制作借书还书的界面&#xff0c;这里我分别制作了两个网页分别用来借书和还书。此页面&#xff0c;也是通过获取books.txt内容然后添加到表格中&#xff0c;但是借还的操作没有添加到后端中去&#xff0c;只是一个简单的前端操作。…...

【练习Day20】字符串变形

链接&#xff1a;字符串变形_牛客题霸_牛客网 方法一&#xff1a;双逆转&#xff08;推荐使用&#xff09; 思路&#xff1a; 将单词位置的反转&#xff0c;那肯定前后都是逆序&#xff0c;不如我们先将整个字符串反转&#xff0c;这样是不是单词的位置也就随之反转了。但是单…...

鸿蒙项目云捐助第二十讲云捐助项目物联网IOT的使用

鸿蒙项目云捐助第二十讲云捐助项目物联网IOT的使用 在鸿蒙技术完成云捐助项目中&#xff0c;物联网技术也是具有一定生命力的存在。这里也会在云捐助项目中使用物联网的技术。 一、华为云IoT物联网操作 这里以华为云的Iot物联网操作来介绍华为云I ot物联网技术。 这里从百度…...

Linux设置篇

查看主机名 hostname 修改主机名 hostnamectl set-hostname 主机名 配置ip映射 vi /etc/hosts 192.168.1.10 pure 限制SSH登录的IP a) 设置禁止所有ip连接服务器的SSH vi /etc/hosts.deny sshd:all:deny b) 设置允许指定ip连接服务器的SSH&#xff08;这边建议设置一个备…...

WatchAlert - 开源多数据源告警引擎

概述 在现代 IT 环境中&#xff0c;监控和告警是确保系统稳定性和可靠性的关键环节。然而&#xff0c;随着业务规模的扩大和数据源的多样化&#xff0c;传统的单一数据源告警系统已经无法满足复杂的需求。为了解决这一问题&#xff0c;我开发了一个开源的多数据源告警引擎——…...

百度面试手撕 go context channel部分学习

题目 手撕 对无序的切片查询指定数 使用context进行子协程的销毁 并且进行超时处理。 全局变量定义 var (startLoc int64(0) // --- 未处理切片数据起始位置endLoc int64(0) // --- 切片数据右边界 避免越界offset int64(0) // --- 根据切片和协程数量 在主线程 动态设…...

主流浏览器内核

1‌、Chromium内核‌ 由Google主导开发&#xff0c;最具代表性的是Google Chrome浏览器。Chromium内核的优点包括无广告、不易崩溃、速度快、安全性高。目前&#xff0c;许多浏览器都采用了Chromium内核&#xff0c;如360极速浏览器、UC浏览器、QQ浏览器等&#xff0c;windows自…...

Apache Tomcat 漏洞CVE-2024-50379条件竞争文件上传漏洞 servlet readonly spring boot 修复方式

1&#xff0c;关于漏洞 Apache Tomcat是一个流行的开源 Web 服务器和 Java Servlet 容器。 二、 漏洞描述 Apache Tomcat中修复了个 TOCTOU 竞争条件远程代码执行漏洞 (CVE-2024-50379)&#xff0c;该漏洞的 CVSS 评分为 9.8。Apache Tomcat 中 JSP 编译期间存在检查时间使用时…...

Java学习教程,从入门到精通,Java LinkedList(链表)语法知识点及案例代码(62)

Java LinkedList&#xff08;链表&#xff09;语法知识点及案例代码 一、LinkedList概述 LinkedList是Java集合框架中的一个类&#xff0c;位于java.util包中。它实现了List、Deque、Queue等接口&#xff0c;提供了链表数据结构的实现。链表是一种线性数据结构&#xff0c;其…...

3分钟读懂数据分析的流程是什么

数据分析是基于商业目的&#xff0c;有目的地进行收集、整理、加工和分析数据&#xff0c;提炼出有价值的 信息的一个过程。整个过程大致可分为五个阶段&#xff0c;具体如下图所示。 1.明确目的和思路 在开展数据分析之前&#xff0c;我们必须要搞清楚几个问题&#xff0c;比…...

【Leetcode 热题 100 - 扩展】303. 区域和检索 - 数组不可变

问题背景 给定一个整数数组 n u m s nums nums&#xff0c;处理以下类型的多个查询&#xff1a; 计算索引 l e f t left left 和 r i g h t right right&#xff08;包含 l e f t left left 和 r i g h t right right&#xff09;之间的 n u m s nums nums 元素的 和 &a…...

Leecode刷题C语言之同位字符串连接的最小长度

执行结果:通过 执行用时和内存消耗如下&#xff1a; bool check(char *s, int m) {int n strlen(s), count0[26] {0};for (int j 0; j < n; j m) {int count1[26] {0};for (int k j; k < j m; k) {count1[s[k] - a];}if (j > 0 && memcmp(count0, cou…...

API开发:Flask VS FastAPI

在当今的Web开发领域&#xff0c;选择合适的框架对于构建高效、稳定且易于维护的API至关重要。Flask和FastAPI是两个备受关注的Python Web框架&#xff0c;它们各自具有独特的特点和优势&#xff0c;适用于不同的开发场景。 文章目录 一、简介二、性能表现三、开发效率&#xf…...

fastAPI接口的请求与响应——基础

1. 后端接口 1.接口实现 pip install fastapi pip install uvicorn# api.py from pydantic import BaseModel from fastapi import FastAPI import uvicorn import os# 定义请求体模型 class Payload(BaseModel):key1: strkey2: str# 创建一个FastAPI应用程序实例 app Fast…...

[oeasy]python054_python有哪些关键字_keyword_list_列表_reserved_words

python有哪些关键字_keyword_list_列表_reserved_words 回忆上次内容 hello world 不是 从来就有的 来自于 c语言 print、小括号 和 双引号 也来自于 c语言 添加图片注释&#xff0c;不超过 140 字&#xff08;可选&#xff09; python 标识符 的 命名规则 依然 完全 学习…...

面试题整理2---Nginx 性能优化全方案

面试题整理2---Nginx 性能优化全方案 1. 调整工作进程数和线程数1.1 调整工作进程数1.2 调整进程的最大连接数 2. 配置Gzip压缩2.2 配置Gzip压缩 3. 配置缓存策略3.1 配置浏览器缓存时间3.2 配置代理服务器缓存时间 4. 优化文件访问方式4.1 使用sendfile()函数发送文件数据4.2 …...

15.3、陷阱技术 入侵容忍 隐私保护技术

目录 网络攻击陷阱技术与应用蜜罐主机技术陷阱网络技术三代陷阱网络网络攻击陷阱技术应用入侵容忍及系统生存技术入侵容忍及系统生存技术应用隐私保护技术网络安全的前沿技术发展动向 网络攻击陷阱技术与应用 攻击陷阱技术也叫诱骗技术&#xff0c;它是一种主动防御的方法&…...

PyQt6 学习记录1

简介 PyQt6 是基于 Python 的一系列模块。它是一个多平台的工具包&#xff0c;可以在包括 Unix、Windows 和 Mac OS 在内的大部分主要操作系统上运行。 安装 pip install PyQt6 模块 - QtCore - QtGui - QtWidgets - QtDBus - QtNetwork - QtHelp - QtXml - QtSvg - QtSql…...

ModelArts平台打卡体验活动:MindSpore2.4.0快速入门

一、环境准备 1.进入ModelArts官网 云平台帮助用户快速创建和部署模型&#xff0c;管理全周期AI工作流&#xff0c;选择下面的云平台以开始使用昇思MindSpore&#xff0c;可以在昇思教程中进入ModelArts官网 创建notebook&#xff0c;点击【打开】启动&#xff0c;进入ModelA…...

python学习——洛谷P2010 [NOIP2016 普及组] 回文日期 三种方法

[NOIP2016 普及组] 回文日期 文章目录 [NOIP2016 普及组] 回文日期题目背景题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 样例 #2样例输入 #2样例输出 #2 提示方法一方法二方法三 题目背景 NOIP2016 普及组 T2 题目描述 在日常生活中&#xff0c;通过年、月、日这…...

现代风格VUE3易支付用户控制中心

适用系统 彩虹易支付 技术栈 vitevue3elementuiplusphp 亮点 独立前端代码,扩展开发,不改动系统文件,不影响原版升级 支持功能订制 界面预览...

重生之我在异世界学智力题(9)

大家好&#xff0c;这里是小编的博客频道 小编的博客&#xff1a;就爱学编程 很高兴在CSDN这个大家庭与大家相识&#xff0c;希望能在这里与大家共同进步&#xff0c;共同收获更好的自己&#xff01;&#xff01;&#xff01; 本文目录 引言时间旅行者的逻辑谜题题目描述&#…...

《Mycat核心技术》第05章:Mycat中文乱码解决方案

作者&#xff1a;冰河 星球&#xff1a;http://m6z.cn/6aeFbs 博客&#xff1a;https://binghe.gitcode.host 文章汇总&#xff1a;https://binghe.gitcode.host/md/all/all.html 星球项目地址&#xff1a;https://binghe.gitcode.host/md/zsxq/introduce.html 沉淀&#xff0c…...

Flink执行模式(批和流)如何选择

DataStream API支持不同的运行时执行模式(batch/streaming),你可以根据自己的需求选择对应模式。 DataStream API的默认执行模式就是streaming,用于需要连续增量处理并且预计会一直保持在线的无界(数据源输入是无限的)作业。 而batch执行模式则用于有界(输入有限)作业…...

vue 文本域 展示的内容格式要和填写时保持一致

文本域 展示的内容格式要和填写时保持一致 <el-inputtype"textarea":rows"5"placeholder"请输入内容"v-model"formCredit.point"style"width:1010px;" > </el-input> 样式加个&#xff1a; white-space: pre-w…...

计算机基础知识复习12.20

B树与B树差异的点 叶子节点最底部的节点才会存放实际数据(索引记录)&#xff0c;非叶子节点只会存放索引 所有索引都会在叶子节点出现&#xff0c;叶子节点之间构成一个有序链表 为什么mysql使用B树 单点查询&#xff1a;B树的非叶子节点不存放实际的记录数据&#xff0c;仅…...

Flash语音芯片相比OTP语音芯片的优势

Flash语音芯片和OTP语音芯片是两种常见的语音解决方案&#xff0c;在各自的应用领域中发挥着重要作用。本文‌将介绍Flash语音芯片相比OTP(One-Time Programmable)语音芯片的显著优势‌。 1‌.可重复擦写‌&#xff1a;Flash语音芯片的最大特点是支持多次编程和擦除&#xff0c…...

深度学习模型中增加随机性可以通过多种方式实现,以下是一些可以应用到你的 `TCNAttentionLSTM`

在深度学习模型中增加随机性可以通过多种方式实现&#xff0c;以下是一些可以应用到你的TCNAttentionLSTM模型中的方法&#xff1a; ### 1. Dropout 你已经在模型中使用了dropout&#xff0c;这是增加随机性的一种常见方法。你可以通过调整dropout率来控制随机性的程度。 ###…...