numpy学习笔记14:模拟随机游走过程

numpy学习笔记14:模拟随机游走过程

随机游走是一种数学统计模型,其中的每一步方向和大小都是随机的。下面使用 NumPy 模拟一维和二维的随机游走过程:

1.代码示例

import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = Falsedef simulate_1d_random_walk(num_steps):"""模拟一维随机游走:param num_steps: 游走的步数:return: 一维随机游走的位置数组"""steps = np.random.choice([-1, 1], size=num_steps)positions = np.cumsum(steps)return positionsdef simulate_2d_random_walk(num_steps):"""模拟二维随机游走:param num_steps: 游走的步数:return: 二维随机游走的 x 和 y 坐标数组"""steps_x = np.random.choice([-1, 1], size=num_steps)steps_y = np.random.choice([-1, 1], size=num_steps)positions_x = np.cumsum(steps_x)positions_y = np.cumsum(steps_y)return positions_x, positions_y# 模拟一维随机游走
num_steps_1d = 1000
positions_1d = simulate_1d_random_walk(num_steps_1d)# 绘制一维随机游走轨迹
plt.figure(figsize=(12, 5))
plt.subplot(1, 2, 1)
plt.plot(positions_1d)
plt.title('一维随机游走')
plt.xlabel('步数')
plt.ylabel('位置')# 模拟二维随机游走
num_steps_2d = 1000
positions_x, positions_y = simulate_2d_random_walk(num_steps_2d)# 绘制二维随机游走轨迹
plt.subplot(1, 2, 2)
plt.plot(positions_x, positions_y)
plt.title('二维随机游走')
plt.xlabel('X 位置')
plt.ylabel('Y 位置')plt.tight_layout()
plt.show()

  1. simulate_1d_random_walk 函数:该函数通过 np.random.choice 从 [-1, 1] 中随机选择 num_steps 个步长,然后使用 np.cumsum 计算累积和,得到一维随机游走的位置数组。
  2. simulate_2d_random_walk 函数:分别为 x 和 y 方向生成随机步长,再分别计算它们的累积和,得到二维随机游走的 x 和 y 坐标数组。
  3. 可视化部分:使用 matplotlib 绘制一维和二维随机游走的轨迹图。

2. 分步解释

(1) 生成随机步长
steps = np.random.choice([-1, 1], size=1000)
  • 功能:生成包含 1000 个元素的数组,每个元素随机为 -1(向左移动)或 1(向右移动)。

  • 概率:默认均匀分布,即 -1 和 1 出现的概率均为 50%。

(2) 计算累积位移
positions = np.cumsum(steps)
  • 功能:通过 np.cumsum() 对步长数组逐步累加,生成随时间变化的位置序列

(3) 可视化结果
plt.plot(positions)
  • 输出:绘制位置随时间变化的折线图,展示粒子的随机运动轨迹。

3. 示例输出图形

横轴为步数,纵轴为位置,展示粒子在直线上的随机移动轨迹。

4. 扩展分析

(1) 多次模拟统计特性
# 模拟100次随机游走,观察平均行为
n_simulations = 100
final_positions = [np.sum(np.random.choice([-1,1], 1000)) for _ in range(n_simulations)]plt.hist(final_positions, bins=20, density=True)
plt.title("Distribution of Final Positions (100 Simulations)")
plt.xlabel("Final Position")
plt.ylabel("Probability Density")
plt.show()
  • 结果:最终位置近似服从正态分布(中心极限定理)。

(2) 均方位移分析

5. 关键参数调整

  • 非对称概率(如向右概率 70%):

    steps = np.random.choice([-1,1], size=1000, p=[0.3, 0.7])
  • 可变步长(如步长为 0.5 或 2):

    steps = np.random.choice([-0.5, 2], size=1000)

6. 应用场景

  1. 金融价格模型:模拟股票价格的随机波动。

  2. 分子扩散:研究微粒在液体中的布朗运动。

  3. 算法测试:评估路径规划或搜索算法的性能。


通过上述代码和分析,你可以灵活模拟不同条件下的随机游走,并深入理解其统计特性!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/72690.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

YOLOv11 目标检测

本文章不再赘述anaconda的下载以及虚拟环境的配置,博主使用的python版本为3.8 1.获取YOLOv11的源工程文件 链接:GitHub - ultralytics/ultralytics: Ultralytics YOLO11 🚀 直接下载解压 2.需要自己准备的文件 文件结构如下:红…

dijkstra算法——47. 参加科学大会

卡码网:47. 参加科学大会https://kamacoder.com/problempage.php?pid=1047 题目描述 小明是一位科学家,他需要参加一场重要的国际科学大会,以展示自己的最新研究成果。 小明的起点是第一个车站,终点是最后一个车站。然而,途中的各个车站之间的道路状况、交通拥堵程度以…

Rust语言介绍和猜数字游戏的实现

文章目录 Rust语言介绍和猜数字游戏的实现cargo是什么使用Rust编写猜数字 Rust语言介绍和猜数字游戏的实现 Rust语言是一种系统编程语言,核心强调安全性、并发性以及高性能,由类似于C/C的底层控制能力,性能也非常接近,Rust有一些…

Ubuntu下Docker部署Misskey:打造你的去中心化社交平台

引言 在信息爆炸的时代,人们对于社交平台的需求日益增长,同时也更加注重数据的隐私和自由。Misskey作为一个开源的去中心化社交平台,为用户提供了一个全新的选择。本文将详细介绍如何在Ubuntu Linux环境下,利用Docker快速部署Mis…

DeepSeek Chat 自动化交互技术分析

本文将对 DeepSeek Chat 自动化交互脚本进行技术分析,包括代码结构、实现原理以及关键技术点。该脚本使用 Selenium 实现了对 DeepSeek Chat 平台的自动化登录和问答功能。 1. 代码结构概览 该脚本主要由以下几个部分组成: 环境准备与依赖导入&#x…

128. Longest Consecutive Sequence

如果n-1存在于数组中&#xff0c;则以n开头的连续序列可以忽略掉&#xff0c;因为以n-1开头的连续序列的长度肯定至少比以n开头的连续序列长1个元素。这是本题的关键。然后利用哈希表查询元素是否在数组中。 class Solution { public:int longestConsecutive(vector<int>…

《SQL编程思想》中的 MySQL 建表语句和测试数据

《SQL编程思想》中的 MySQL 建表语句 建表语句 -- 创建 4 个示例表和索引 CREATE TABLE department( dept_id INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY COMMENT 部门编号&#xff0c;自增主键, dept_name VARCHAR(50) NOT NULL COMMENT 部门名称) ENGINEInnoDB COMM…

基于ssm学科竞赛小程序的设计及实现(源码+lw+部署文档+讲解),源码可白嫖!

摘要 随着信息时代的来临&#xff0c;过去的学科竞赛管理方式的缺点逐渐暴露&#xff0c;本次对过去的学科竞赛管理方式的缺点进行分析&#xff0c;采取计算机方式构建学科竞赛小程序。本文通过阅读相关文献&#xff0c;研究国内外相关技术&#xff0c;提出了一种关于竞赛信息…

【redis】什么是持久化之 RDB

什么是持久化 MySQL 的事务&#xff0c;有四个比较核心的特性&#xff1a; 原子性一致性持久性>持久化&#xff08;说的一回事&#xff09; 把数据存储在硬盘上>持久把数据存在内存上>不持久重启进程/重启主机之后&#xff0c;数据是否还存在 隔离性 Redis 是一个内存…

Python 鼠标轨迹算法 - 防止游戏检测

一.简介 鼠标轨迹算法是一种模拟人类鼠标操作的程序&#xff0c;它能够模拟出自然而真实的鼠标移动路径。 鼠标轨迹算法的底层实现采用C/C语言&#xff0c;原因在于C/C提供了高性能的执行能力和直接访问操作系统底层资源的能力。 鼠标轨迹算法具有以下优势&#xff1a; 模拟…

游戏立项时期随笔记录(1)

模拟经营的项目还没有完全结束&#xff0c;这几天又有可能涉及到一个新项目。感想随笔记录一下&#xff0c;防止忘记。今天一天整理这个&#xff0c;搞得今天没时间看数学和AI。 在 Unity3D 游戏前端主程序的立项时期&#xff0c;核心目标是明确技术方向、评估可行性、搭建基础…

Channel-wise Knowledge Distillation for Dense Prediction论文阅读和

paper&#xff1a;https://arxiv.org/pdf/2011.13256.pdf code&#xff1a;https://github.com/open-mmlab/mmrazor 这篇paper主要是商汤开源的mmrazor中提及在detection有效果&#xff0c;我之前记录的几篇sota文章虽然在各自的paper中在detection领域都有提及有增益&#…

hide函数的使用方法

在编程中&#xff0c;我们常常需要控制元素的显示与隐藏。特别是在前端开发中&#xff0c;hide 函数是一个非常常见的操作&#xff0c;尤其是在 JavaScript 和 jQuery 中。它可以让你轻松地将元素从视图中隐藏&#xff0c;进而提升用户交互体验和页面的响应能力。本文将介绍如何…

【MySQL】基本操作 —— DML 与约束

目录 DML 基本介绍DML 常见操作添加数据 insert给指定字段添加数据给全部字段添加数据给指定字段批量添加数据给全部字段批量添加数据 修改数据 update删除数据 delete 约束基本概念约束操作主键约束添加单列主键添加多列主键&#xff08;联合主键&#xff09;修改表结构添加主…

nginx配置转发到另一个网站或另一台服务器的服务

需求背景 在一台服务器上安装了一个服务&#xff0c;不想使用ip:port方式&#xff0c;想使用域名打开这个服务的地址。 1. 配置转发 1.1 参数解释 listen&#xff1a;指定 Nginx 监听的端口。在上面的例子中&#xff0c;Nginx 监听 8888 端口。server_name&#xff1a;用于…

HarmonyOS三层架构实战

目录&#xff1a; 1、三层架构项目结构1.0、三层架构简介1.1、 common层&#xff08;主要放一些公共的资源等&#xff09;1.2、 features层&#xff08;主要模块定义的组件以及图片等静态资源&#xff09;1.3、 products层&#xff08;主要放主页面层和一些主要的资源&#xff…

macOS homebrew - 切换源

https://mirrors.tuna.tsinghua.edu.cn/help/homebrew/ 环境变量中 添加&#xff1a; export HOMEBREW_BREW_GIT_REMOTE"https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/brew.git" export HOMEBREW_CORE_GIT_REMOTE"https://mirrors.tuna.tsinghua.edu.cn…

ETL中的实用功能以及数据集成方式

在企业数字化转型的进程中&#xff0c;数据集成扮演着至关重要的角色。它不仅是实现信息流动和系统协同的关键步骤&#xff0c;更是提升企业运营效率和决策能力的核心驱动力。ETL&#xff08;Extract&#xff0c;Transform&#xff0c;Load&#xff09;作为数据集成的重要工具&…

基于Springboot+Typst的PDF生成方案,适用于报告打印/标签打印/二维码打印等

基于SpringbootTypst的PDF生成方案&#xff0c;适用于报告打印/标签打印/二维码打印等。 仅提供后端实现 Typst2pdf-for-report/label/QR code github 环境 JDK11linux/windows/mac 应用场景 适用于定制化的报告模板/标签/条码/二维码等信息的pdf生成方案。通过浏览器的p…

OSG简介

OSG OpenSceneGraph (简称 OSG) 是一个开源的高性能3D图形库。 作用 它为开发者提供了一个强大的API&#xff0c;处理和渲染复杂的3D图形。 特点 OSG基于OpenGL构建&#xff0c;提供了对现代图形技术的支持&#xff0c;如着色器、纹理映射、光照模型等高级特性。 跨平台支…