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

【Numpy核心编程攻略:Python数据处理、分析详解与科学计算】2.21 随机数生成:梅森旋转算法的工程实现

在这里插入图片描述

2.21 随机数生成:梅森旋转算法的工程实现

目录

2.21 随机数生成:梅森旋转算法的工程实现] --> B[2.21.1 PRNG算法解析
2.21.2 种子管理策略
2.21.3 并行随机流控制
2.21.4 蒙特卡洛模拟案例
2.21.5 密码学安全性分析
2.21.6 总结与参考文献

2.21.1 PRNG算法解析

2.21.1.1 什么是PRNG

PRNG(Pseudo-Random Number Generator) 是伪随机数生成器,用于生成一系列看似随机的数。这些数是通过确定性的算法生成的,因此可以通过相同的种子完全重现。

2.21.1.2 梅森旋转算法

梅森旋转算法(Mersenne Twister) 是一种高效的伪随机数生成算法,以其周期长和高质量的随机性而著称。NumPy 中的 numpy.random 模块默认使用梅森旋转算法。

2.21.1.3 梅森旋转算法的原理

梅森旋转算法通过一个复杂的线性反馈移位寄存器(LFSR)来生成随机数。该算法的核心是一个巨大的状态向量,通过一系列的位操作和移位来更新状态向量,从而生成高质量的伪随机数。

2.21.2 种子管理策略

2.21.2.1 种子的作用

种子(Seed)是用于初始化 PRNG 的值。相同的种子将生成相同的随机数序列,这对于重现性和测试非常有用。

2.21.2.2 设置种子

2.21.2.2.1 全局种子
import numpy as np# 设置全局种子
np.random.seed(42)  # 设置全局种子为 42# 生成随机数
random_numbers = np.random.rand(5)  # 生成 5 个 [0, 1) 之间的随机数
print(random_numbers)  # 输出: 生成的随机数
2.21.2.2.2 局部种子
import numpy as np# 创建带有局部种子的随机数生成器
rng = np.random.RandomState(42)  # 创建一个 RandomState 对象,种子为 42# 生成随机数
random_numbers = rng.rand(5)  # 生成 5 个 [0, 1) 之间的随机数
print(random_numbers)  # 输出: 生成的随机数

2.21.2.3 种子管理的重要性

  • 重现性:在科学研究和测试中,设置相同的种子可以确保实验结果的可重现性。
  • 安全性:在密码学应用中,种子的管理尤为重要,需要确保种子的随机性和不可预测性。

2.21.3 并行随机流控制

2.21.3.1 并行随机流的必要性

在并行计算中,多个线程或进程可能需要独立的随机数流。如果每个线程使用相同的全局种子,会导致随机数序列重复,从而影响计算结果的准确性。

2.21.3.2 使用独立的随机数生成器

import numpy as np
import threadingdef random_thread(seed):# 创建带有局部种子的随机数生成器rng = np.random.RandomState(seed)  # 创建一个 RandomState 对象,种子为 42# 生成随机数random_numbers = rng.rand(5)  # 生成 5 个 [0, 1) 之间的随机数print(f"线程 {threading.get_ident()} 生成的随机数: {random_numbers}")# 创建多个线程
threads = []
for i in range(5):t = threading.Thread(target=random_thread, args=(i,))threads.append(t)t.start()# 等待所有线程完成
for t in threads:t.join()

2.21.3.3 使用 numpy.random.Generator

NumPy 1.17 以后引入了 Generator 类,提供了更加灵活的随机数生成方法。

import numpy as np
import threadingdef random_thread(seed):# 创建带有局部种子的随机数生成器rng = np.random.default_rng(seed)  # 创建一个默认的随机数生成器,种子为 42# 生成随机数random_numbers = rng.random(5)  # 生成 5 个 [0, 1) 之间的随机数print(f"线程 {threading.get_ident()} 生成的随机数: {random_numbers}")# 创建多个线程
threads = []
for i in range(5):t = threading.Thread(target=random_thread, args=(i,))threads.append(t)t.start()# 等待所有线程完成
for t in threads:t.join()

2.21.4 蒙特卡洛模拟案例

2.21.4.1 蒙特卡洛模拟简介

蒙特卡洛模拟 是一种通过随机抽样来解决复杂问题的方法,广泛应用于金融、物理、工程等领域。

2.21.4.2 蒙特卡洛模拟案例:圆周率估计

2.21.4.2.1 原理介绍

通过随机点的生成和统计,可以估计出圆周率的值。具体原理如下:

  1. 在一个 (1 \times 1) 的正方形中随机生成点。
  2. 统计这些点中有多少落在单位圆内。
  3. 通过比例计算圆周率。
2.21.4.2.2 代码实现
import numpy as np
import matplotlib.pyplot as pltdef estimate_pi(num_samples):# 生成 num_samples 个随机点x = np.random.rand(num_samples)  # 生成 x 坐标的随机数y = np.random.rand(num_samples)  # 生成 y 坐标的随机数# 计算落在单位圆内的点数inside_circle = (x**2 + y**2) < 1  # 判断点是否在单位圆内pi_estimate = 4 * np.mean(inside_circle)  # 估计圆周率# 绘制结果plt.figure(figsize=(8, 8))plt.scatter(x[inside_circle], y[inside_circle], color='blue', label='Inside Circle')  # 在圆内的点plt.scatter(x[~inside_circle], y[~inside_circle], color='red', label='Outside Circle')  # 在圆外的点circle = plt.Circle((0.5, 0.5), 0.5, color='black', fill=False)  # 绘制单位圆plt.gca().add_patch(circle)plt.legend()plt.title(f"Estimate of Pi: {pi_estimate:.6f}")plt.xlabel("X Coordinate")plt.ylabel("Y Coordinate")plt.show()return pi_estimate# 估计圆周率
pi_estimate = estimate_pi(10000)
print(f"估计的圆周率: {pi_estimate:.6f}")

2.21.4.3 蒙特卡洛模拟案例:金融建模

2.21.4.3.1 原理介绍

在金融建模中,蒙特卡洛模拟可以用于估计期权价格、风险管理等。

2.21.4.3.2 代码实现
import numpy as npdef monte_carlo_simulation(S, K, T, r, sigma, num_simulations):# 参数解释# S: 当前股票价格# K: 行权价格# T: 到期时间(年)# r: 无风险利率# sigma: 波动率# num_simulations: 模拟次数# 生成随机数z = np.random.standard_normal(num_simulations)  # 生成标准正态分布的随机数# 计算到期时的股票价格ST = S * np.exp((r - 0.5 * sigma**2) * T + sigma * np.sqrt(T) * z)  # 计算到期时的股票价格# 计算期权价格payoff = np.maximum(ST - K, 0)  # 计算期权的收益option_price = np.mean(payoff) * np.exp(-r * T)  # 折现到当前时间return option_price# 参数设置
S = 100  # 当前股票价格
K = 100  # 行权价格
T = 1  # 到期时间(年)
r = 0.05  # 无风险利率
sigma = 0.2  # 波动率
num_simulations = 100000  # 模拟次数# 进行蒙特卡洛模拟
option_price = monte_carlo_simulation(S, K, T, r, sigma, num_simulations)
print(f"估计的期权价格: {option_price:.6f}")

2.21.5 密码学安全性分析

2.21.5.1 密码学中随机数的要求

在密码学应用中,随机数的生成需要满足以下要求:

  • 随机性:生成的随机数应具有良好的随机性,难以预测。
  • 安全性:生成的随机数应具有高强度的安全性,防止被破解。

2.21.5.2 梅森旋转算法的安全性

尽管梅森旋转算法生成的随机数具有良好的随机性,但它并不适合密码学应用。主要原因如下:

  • 可预测性:如果攻击者能够获取到生成的随机数序列,通过逆向工程可以推导出种子,从而预测未来的随机数。
  • 周期性:梅森旋转算法的周期虽然很长,但仍然是有限的,不满足密码学中的无限周期要求。

2.21.5.3 密码学中常用的随机数生成器

  • os.urandom:生成加密安全的随机数。
  • secrets 模块:Python 3.6 引入的模块,提供加密安全的随机数生成方法。
2.21.5.3.1 os.urandom 示例
import os# 生成 10 个字节的加密安全随机数
random_bytes = os.urandom(10)
print(f"生成的随机字节: {random_bytes}")  # 输出: 生成的随机字节
2.21.5.3.2 secrets 模块示例
import secrets# 生成一个 0 到 99 之间的加密安全随机数
random_number = secrets.randbelow(100)
print(f"生成的加密安全随机数: {random_number}")  # 输出: 生成的加密安全随机数

2.21.6 总结与参考文献

2.21.6.1 总结

本文详细介绍了 NumPy 中梅森旋转算法的工程实现,包括种子管理策略、并行随机流控制、蒙特卡洛模拟案例以及密码学安全性分析。通过这些内容,读者可以深入理解如何在实际应用中高效地生成和管理随机数。

2.21.6.2 参考文献

资料名称链接
NumPy 官方文档https://numpy.org/doc/
SciPy 官方文档https://docs.scipy.org/doc/scipy/reference/
Mersenne Twister 官方文档https://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/emt.html
NIST 随机数生成器标准https://csrc.nist.gov/publications/detail/sp/800-90a/rev-1/final
Python os 模块文档https://docs.python.org/3/library/os.html
Python secrets 模块文档https://docs.python.org/3/library/secrets.html
蒙特卡洛模拟原理https://en.wikipedia.org/wiki/Monte_Carlo_method
金融建模中的蒙特卡洛模拟https://www.investopedia.com/terms/m/montecarlosimulation.asp
随机数生成器的密码学安全性分析https://www.sciencedirect.com/science/article/pii/S1574013703000163
随机数生成器的工程实现https://www.cs.utexas.edu/users/plConfigurationException/a83893/papers/rn.pdf
随机数生成器的性能测试https://www.kth.se/polopoly_fs/1.486144!/Menuinst/%C4%BA%C2%B8e%C5%87%C2%B8en%C5%87%C2%B8ese%C5%87%C2%B8ur%C5%87%C2%B8ando%C5%87%C2%B8generating%C5%87%C2%B8numbers.pdf
随机数生成器的并行实现https://www.researchgate.net/publication/220542951_Parallel_Pseudo-Random_Number_Generation
随机数生成器的数学原理https://www.cs.rpi.edu/~zaki/Papers/2001/tr-01-14.pdf
Python 数据科学手册https://www.data-science-handbook.com/
随机数生成器的高级应用https://www.high-performance-computing.com/

希望本文对您理解 NumPy 中梅森旋转算法及其应用有所帮助。这篇文章包含了详细的原理介绍、代码示例、源码注释以及案例等。希望这对您有帮助。如果有任何问题请随私信或评论告诉我。

相关文章:

【Numpy核心编程攻略:Python数据处理、分析详解与科学计算】2.21 随机数生成:梅森旋转算法的工程实现

2.21 随机数生成&#xff1a;梅森旋转算法的工程实现 目录 #mermaid-svg-J92AWLtQsj9ys1z6 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-J92AWLtQsj9ys1z6 .error-icon{fill:#552222;}#mermaid-svg-J92AWLtQsj9y…...

LeetCode 0922.按奇偶排序数组 II:O(1)空间复杂度-一次遍历双指针

【LetMeFly】922.按奇偶排序数组 II&#xff1a;O(1)空间复杂度-一次遍历双指针 力扣题目链接&#xff1a;https://leetcode.cn/problems/sort-array-by-parity-ii/ 给定一个非负整数数组 nums&#xff0c; nums 中一半整数是 奇数 &#xff0c;一半整数是 偶数 。 对数组进…...

VSCode设置内容字体大小

1、打开VSCode软件&#xff0c;点击左下角的“图标”&#xff0c;选择“Setting”。 在命令面板中的Font Size处选择适合自己的字体大小。 2、对比Font Size值为14与20下的字体大小。...

【蓝桥杯】日志统计

日志统计&#xff08;编程题&#xff09;https://dashoj.com/d/lqbproblem/p/53https://dashoj.com/d/lqbproblem/p/53https://dashoj.com/d/lqbproblem/p/53 题目 日志统计(编程题) 讲解 这个讲解感觉比较通俗易懂。 蓝桥杯2018年省赛B组08&#xff08;c/c&#xff09;日…...

九. Redis 持久化-AOF(详细讲解说明,一个配置一个说明分析,步步讲解到位 2)

九. Redis 持久化-AOF(详细讲解说明&#xff0c;一个配置一个说明分析&#xff0c;步步讲解到位 2) 文章目录 九. Redis 持久化-AOF(详细讲解说明&#xff0c;一个配置一个说明分析&#xff0c;步步讲解到位 2)1. Redis 持久化 AOF 概述2. AOF 持久化流程3. AOF 的配置4. AOF 启…...

蓝桥杯备赛题目练习(一)

一. 口算练习题 ## 题目描述 王老师正在教简单算术运算。细心的王老师收集了 i 道学生经常做错的口算题&#xff0c;并且想整理编写成一份练习。 编排这些题目是一件繁琐的事情&#xff0c;为此他想用计算机程序来提高工作效率。王老师希望尽量减少输入的工作量&#xff0c;比…...

【Linux探索学习】第二十八弹——信号(下):信号在内核中的处理及信号捕捉详解

Linux学习笔记&#xff1a; https://blog.csdn.net/2301_80220607/category_12805278.html?spm1001.2014.3001.5482 前言&#xff1a; 在前面我们已经学习了有关信号的一些基本的知识点&#xff0c;包括&#xff1a;信号的概念、信号产生和信号处理等&#xff0c;今天我们重…...

AI与SEO关键词的完美结合如何提升网站流量与排名策略

内容概要 在当今数字营销环境中&#xff0c;内容的成功不仅依赖于高质量的创作&#xff0c;还包括高效的关键词策略。AI与SEO关键词的结合&#xff0c;正是这一趋势的重要体现。 AI技术在SEO中的重要性 在数字营销领域&#xff0c;AI技术的引入为SEO策略带来了前所未有的变革。…...

《运维:技术的基石,服务的保障》

1. LVS&#xff08;Linux Virtual Server&#xff09;&#xff1a;基于Linux内核的四层负载均衡解决方案 2. Bonding&#xff08;链路聚合&#xff09;&#xff1a;物理网卡冗余与带宽叠加技术 3. RHEL&#xff08;Red Hat Enterprise Linux&#xff09;&#xff1a;企业级Li…...

CSS Display属性完全指南

CSS Display属性完全指南 引言核心概念常用display值详解1. block&#xff08;块级元素&#xff09;2. inline&#xff08;行内元素&#xff09;3. inline-block&#xff08;行内块级元素&#xff09;4. flex&#xff08;弹性布局&#xff09;5. grid&#xff08;网格布局&…...

【C++】STL——vector底层实现

目录 &#x1f495; 1.vector三个核心 &#x1f495;2.begin函数&#xff0c;end函数的实现&#xff08;简单略讲&#xff09; &#x1f495;3.size函数&#xff0c;capacity函数的实现 &#xff08;简单略讲&#xff09; &#x1f495;4.reserve函数实现 &#xff08;细节…...

Docker Compose的使用

文章首发于我的博客&#xff1a;https://blog.liuzijian.com/post/docker-compose.html 目录 Docker Compose是什么Docker Compose安装Docker Compose文件Docker Compose常用命令案例&#xff1a;部署WordPress博客系统 Docker Compose是什么 Docker Compose是Docker官方的开源…...

11 3D变换模块(transform3d.rs)

transform3d.rs代码定义了一个名为 Transform3D 的 Rust 结构体&#xff0c;它用于表示一个3D变换矩阵。这个结构体是泛型的&#xff0c;包含三个类型参数&#xff1a;T、Src 和 Dst。其中&#xff0c;T 用于矩阵元素的数据类型&#xff0c;Src 和 Dst 用于表示变换的源和目标类…...

昆仑万维Java开发面试题及参考答案

进程和线程的区别是什么? 进程和线程都是操作系统中非常重要的概念,它们在多个方面存在显著的区别。 从定义上看,进程是操作系统进行资源分配和调度的基本单位。每个进程都有自己独立的内存空间,包括代码段、数据段、堆栈段等。例如,当你在电脑上同时打开浏览器和音乐播放…...

vscode命令面板输入 CMake:build不执行提示输入

CMake&#xff1a;build或rebuild不编译了&#xff0c;弹出:> [Add a new preset] , 提示输入发现settings.jsons设置有问题 { "workbench.colorTheme": "Default Light", "cmake.pinnedCommands": [ "workbench.action.tasks.configu…...

Fastdds学习分享_xtpes_发布订阅模式及rpc模式

在之前的博客中我们介绍了dds的大致功能&#xff0c;与组成结构。本篇博文主要介绍的是xtypes.分为理论和实际运用两部分.理论主要用于梳理hzy大佬的知识&#xff0c;对于某些一带而过的部分作出更为详细的阐释&#xff0c;并在之后通过实际案例便于理解。案例分为普通发布订阅…...

什么叫DeepSeek-V3,以及与GPT-4o的区别

1. DeepSeek 的故事 1.1 DeepSeek 是什么&#xff1f; DeepSeek 是一家专注于人工智能技术研发的公司&#xff0c;致力于打造高性能、低成本的 AI 模型。它的目标是让 AI 技术更加普惠&#xff0c;让更多人能够用上强大的 AI 工具。 1.2 DeepSeek-V3 的问世 DeepSeek-V3 是…...

【C#】Process、ProcessStartInfo启动外部exe

在C#中使用 Process 和 ProcessStartInfo 类启动外部 .exe 文件&#xff0c;可以按照以下步骤进行&#xff1a; 创建 ProcessStartInfo 实例&#xff1a;配置进程启动信息&#xff0c;包括可执行文件的路径、传递给该程序的参数等。 设置启动选项&#xff1a;根据需要配置 Pro…...

android 音视频系列引导

音视频这块的知识点自己工作中有用到&#xff0c;一直没有好好做一个总结&#xff0c;原因有客观和主观的。 客观是工作太忙&#xff0c;没有成段时间做总结。 主观自己懒。 趁着这次主动离职拿了n1的钱&#xff0c;休息一下&#xff0c;对自己的人生做一下总结&#xff0c;…...

Mac电脑上最新的好用邮件软件比较

在Mac电脑上&#xff0c;选择一款好用的邮件软件需要根据个人需求、功能偏好以及与系统生态的兼容性来决定。以下是基于我搜索到的资料&#xff0c;对当前市场上一些优秀的邮件客户端进行比较和推荐&#xff1a; 1. Apple Mail Apple Mail是Mac系统自带的邮件客户端&#xff…...

C#,入门教程(11)——枚举(Enum)的基础知识和高级应用

上一篇&#xff1a; C#&#xff0c;入门教程(10)——常量、变量与命名规则的基础知识https://blog.csdn.net/beijinghorn/article/details/123913570 不会枚举&#xff0c;就不会编程&#xff01; 枚举 一个有组织的常量系列 比如&#xff1a;一个星期每一天的名字&#xf…...

Spring 实现注入的方式

一、XML配置文件注入 概念&#xff1a;这是一种传统的依赖注入方式&#xff0c;通过在XML文件中配置bean的相关信息来实现依赖注入。在Spring框架中&#xff0c;需要在applicationContext.xml或spring-config.xml等配置文件中定义bean&#xff0c;并通过<property>标签或…...

【论文复现】粘菌算法在最优经济排放调度中的发展与应用

目录 1.摘要2.黏菌算法SMA原理3.改进策略4.结果展示5.参考文献6.代码获取 1.摘要 本文提出了一种改进粘菌算法&#xff08;ISMA&#xff09;&#xff0c;并将其应用于考虑阀点效应的单目标和双目标经济与排放调度&#xff08;EED&#xff09;问题。为提升传统粘菌算法&#xf…...

【LLM-agent】(task6)构建教程编写智能体

note 构建教程编写智能体 文章目录 note一、功能需求二、相关代码&#xff08;1&#xff09;定义生成教程的目录 Action 类&#xff08;2&#xff09;定义生成教程内容的 Action 类&#xff08;3&#xff09;定义教程编写智能体&#xff08;4&#xff09;交互式操作调用教程编…...

04树 + 堆 + 优先队列 + 图(D1_树(D10_决策树))

目录 一、引言 二、算法原理 三、算法实现 四、知识小结 一、引言 决策树算法是一种常用的机器学习算法&#xff0c;可用于分类和回归问题。它基于特征之间的条件判断来构 建一棵树&#xff0c;树的每个节点代表一个特征&#xff0c;每个叶节点代表一个类别或回归值。决策…...

JavaScript模块化

什么是JavaScript的模块化&#xff1f; JavaScript的模块化是指将代码分割成独立的、可重用的模块&#xff0c;每个模块具有自己的功能和作用&#xff0c;可以单独进行开发、测试和维护。不同的目的是提升代码的可维护性、可复用性和可扩展性&#xff0c;同时避免不同模块间的…...

排序算法--插入排序

插入排序是一种简单且稳定的排序算法&#xff0c;适合小规模数据或部分有序数据。 // 插入排序函数 void insertionSort(int arr[], int n) {for (int i 1; i < n; i) { // 从第二个元素开始int key arr[i]; // 当前需要插入的元素int j i - 1;// 将比 key 大的元素向后移…...

【C语言篇】“三子棋”

一、游戏介绍 三子棋&#xff0c;英文名为 Tic - Tac - Toe&#xff0c;是一款简单而经典的棋类游戏。游戏在一个 33 的棋盘上进行&#xff0c;两名玩家轮流在棋盘的空位上放置自己的棋子&#xff08;通常用 * 和 # 表示&#xff09;&#xff0c;率先在横、竖或斜方向上连成三个…...

【大模型理论篇】DeepSeek-R1:引入冷启动的强化学习

1. 背景 首先给出DeepSeek-V3、DeepSeek-R1-Zero、DeepSeek-R1的关系图【1】。 虽然DeepSeek-R1-Zero推理能力很强&#xff0c;但它也面临一些问题。例如&#xff0c;DeepSeek-R1-Zero存在可读性差和语言混杂等问题。为了使推理过程更具可读性&#xff0c;进而推出了DeepSee…...

Linux基础 ——tmux vim 以及基本的shell语法

Linux 基础 ACWING y总的Linux基础课&#xff0c;看讲义作作笔记。 tmux tmux 可以干嘛&#xff1f; tmux可以分屏多开窗口&#xff0c;可以进行多个任务&#xff0c;断线&#xff0c;不会自动杀掉正在进行的进程。 tmux – session(会话&#xff0c;多个) – window(多个…...

使用 Kotlin 将 Vertx 和 Springboot 整合

本篇文章目的是将 Springboot 和 Vertx 进行简单整合。整合目的仅仅是为了整活&#xff0c;因为两个不同的东西整合在一起提升的性能并没有只使用 Vertx 性能高&#xff0c;因此追求高性能的话这是在我来说不推荐。而且他们不仅没有提高很多性能甚至增加了学习成本 一、整合流…...

【单层神经网络】softmax回归的从零开始实现(图像分类)

softmax回归 该回归分析为后续的多层感知机做铺垫 基本概念 softmax回归用于离散模型预测&#xff08;分类问题&#xff0c;含标签&#xff09; softmax运算本质上是对网络的多个输出进行了归一化&#xff0c;使结果有一个统一的判断标准&#xff0c;不必纠结为什么要这么算…...

课题推荐——基于自适应滤波技术的多传感器融合在无人机组合导航中的应用研究

无人机在现代航空、农业和监测等领域的应用日益广泛。为了提高导航精度&#xff0c;通常采用多传感器融合技术&#xff0c;将来自GPS、惯性测量单元&#xff08;IMU&#xff09;、磁力计等不同传感器的数据整合。然而&#xff0c;传感器的量测偏差、环境干扰以及非线性特性使得…...

【基于SprintBoot+Mybatis+Mysql】电脑商城项目之用户登录

&#x1f9f8;安清h&#xff1a;个人主页 &#x1f3a5;个人专栏&#xff1a;【Spring篇】【计算机网络】【Mybatis篇】 &#x1f6a6;作者简介&#xff1a;一个有趣爱睡觉的intp&#xff0c;期待和更多人分享自己所学知识的真诚大学生。 目录 &#x1f3af;1.登录-持久层 &…...

Mono里运行C#脚本40—mono_magic_trampoline函数的参数设置

前面介绍过跳板代码,它是用来切换托管代码与非托管的代码,以及运行时与C#代码的交互。实现从运行时切换到C#代码来运行,再从C#代码返回运行时。 要想理解整个切换的细节,那么就需要理解mono_magic_trampoline函数, 而要理解此函数,就必须了解这个函数的参数来源。 要理…...

Verilog基础(三):过程

过程(Procedures) - Always块 – 组合逻辑 (Always blocks – Combinational) 由于数字电路是由电线相连的逻辑门组成的,所以任何电路都可以表示为模块和赋值语句的某种组合. 然而,有时这不是描述电路最方便的方法. 两种always block是十分有用的: 组合逻辑: always @(…...

实际操作 检测缺陷刀片

号he 找到目标图像的缺陷位置&#xff0c;首先思路为对图像进行预处理&#xff0c;灰度-二值化-针对图像进行轮廓分析 //定义结构元素 Mat se getStructuringElement(MORPH_RECT, Size(3, 3), Point(-1, -1)); morphologyEx(thre, tc, MORPH_OPEN, se, Point(-1, -1), 1); …...

DeepSeek 阐述 2025年前端发展趋势

预测2025年前端的发展趋势。首先&#xff0c;我需要考虑当前的前端 技术发展情况&#xff0c;以及近几年的变化趋势。比如&#xff0c;框架方面&#xff0c;React、Vue、Angular这些主流框架的更新方向和社区活跃度。可能用户想知道未来哪些技术会更流行&#xff0c;或者需要学…...

Elasticsearch基本使用详解

文章目录 Elasticsearch基本使用详解一、引言二、环境搭建1、安装 Elasticsearch2、安装 Kibana&#xff08;可选&#xff09; 三、索引操作1、创建索引2、查看索引3、删除索引 四、数据操作1、插入数据2、查询数据&#xff08;1&#xff09;简单查询&#xff08;2&#xff09;…...

【Rust自学】17.3. 实现面向对象的设计模式

喜欢的话别忘了点赞、收藏加关注哦&#xff0c;对接下来的教程有兴趣的可以关注专栏。谢谢喵&#xff01;(&#xff65;ω&#xff65;) 17.3.1. 状态模式 状态模式(state pattern) 是一种面向对象设计模式&#xff0c;指的是一个值拥有的内部状态由数个状态对象&#xff08…...

司库建设-融资需求分析与计划制定

当企业现金流紧张时&#xff0c;企业需要考虑外部融资&#xff0c;从财务营运角度来考虑和分析如何确定输入和输出&#xff0c;进行整体解决方案设计。 融资需求分析与计划制定 功能点&#xff1a; 现金流预测工具&#xff1a;集成历史数据和业务计划&#xff0c;自动生成未来1…...

2. 【.NET Aspire 从入门到实战】--理论入门与环境搭建--.NET Aspire 概览

在当今快速发展的软件开发领域&#xff0c;构建高效、可靠且易于维护的云原生应用程序已成为开发者和企业的核心需求。.NET Aspire 作为一款专为云原生应用设计的开发框架&#xff0c;旨在简化分布式系统的构建和管理&#xff0c;提供了一整套工具、模板和集成包&#xff0c;帮…...

【Elasticsearch】allow_no_indices

- **allow_no_indices 参数的作用**&#xff1a; 该参数用于控制当请求的目标索引&#xff08;通过通配符、别名或 _all 指定&#xff09;不存在或已关闭时&#xff0c;Elasticsearch 的行为。 - **默认行为**&#xff1a; 如果未显式设置该参数&#xff0c;默认值为 …...

26.useScript

在 Web 应用开发中&#xff0c;动态加载外部脚本是一个常见需求&#xff0c;特别是在需要集成第三方库或服务时。然而&#xff0c;在 React 应用中管理脚本加载可能会变得复杂。useScript 钩子提供了一种优雅的方式来处理外部脚本的加载、错误处理和清理&#xff0c;使得在 Rea…...

跨域问题和解决方案

跨域问题及解决方案 同源策略及跨域问题 同源策略是一套浏览器安全机制&#xff0c;当一个源的文档和脚本&#xff0c;与另一个源的资源进行通信时&#xff0c;同源策略就会对这个通信做出不同程度的限制。 简单来说&#xff0c;同源策略对 同源资源 放行&#xff0c;对 异源…...

springboot中路径默认配置与重定向/转发所存在的域对象

Spring Boot 是一种简化 Spring 应用开发的框架&#xff0c;它提供了多种默认配置和方便的开发特性。在 Web 开发中&#xff0c;路径配置和请求的重定向/转发是常见操作。本文将详细介绍 Spring Boot 中的路径默认配置&#xff0c;并解释重定向和转发过程中存在的域对象。 一、…...

【OS】AUTOSAR架构下的Interrupt详解(下篇)

目录 3.代码分析 3.1中断配置代码 3.2 OS如何找到中断处理函数 3.3 Os_InitialEnableInterruptSources实现 3.4 Os_EnableInterruptSource 3.5 DisableAllInterrupts 3.5.1Os_IntSuspendCat1 3.5.2 Os_InterruptDisableAllEnter 3.5.3 Disable二类中断 3.5.4 Disable一…...

基于遗传算法的256QAM星座图的最优概率整形matlab仿真,对比优化前后整形星座图和误码率

目录 1.算法仿真效果 2.算法涉及理论知识概要 3.MATLAB核心程序 4.完整算法代码文件获得 1.算法仿真效果 matlab2022a仿真结果如下&#xff08;完整代码运行后无水印&#xff09;&#xff1a; GA优化曲线&#xff1a; 优化前后星座图对比 优化前后误码率对比 仿真操作步骤…...

Android学习21 -- launcher

1 前言 之前在工作中&#xff0c;第一次听到launcher有点蒙圈&#xff0c;不知道是啥&#xff0c;当时还赶鸭子上架去和客户PK launcher的事。后来才知道其实就是安卓的桌面。本来还以为很复杂&#xff0c;毕竟之前接触过windows的桌面&#xff0c;那叫一个复杂。。。 后面查了…...

小程序越来越智能化,作为设计师要如何进行创新设计

一、用户体验至上 &#xff08;一&#xff09;简洁高效的界面设计 小程序的特点之一是轻便快捷&#xff0c;用户期望能够在最短的时间内找到所需功能并完成操作。因此&#xff0c;设计师应致力于打造简洁高效的界面。避免过多的装饰元素和复杂的布局&#xff0c;采用清晰的导航…...