【NumPy】全面解析NumPy随机数生成器:使用numpy.random的实用技巧

news2024/12/27 12:54:02

🧑 博主简介:阿里巴巴嵌入式技术专家,深耕嵌入式+人工智能领域,具备多年的嵌入式硬件产品研发管理经验。

📒 博客介绍:分享嵌入式开发领域的相关知识、经验、思考和感悟,欢迎关注。提供嵌入式方向的学习指导、简历面试辅导、技术架构设计优化、开发外包等服务,有需要可加文末联系方式联系。

💬 博主粉丝群介绍:① 群内高中生、本科生、研究生、博士生遍布,可互相学习,交流困惑。② 热榜top10的常客也在群里,也有数不清的万粉大佬,可以交流写作技巧,上榜经验,涨粉秘籍。③ 群内也有职场精英,大厂大佬,可交流技术、面试、找工作的经验。④ 进群免费赠送写作秘籍一份,助你由写作小白晋升为创作大佬。⑤ 进群赠送CSDN评论防封脚本,送真活跃粉丝,助你提升文章热度。有兴趣的加文末联系方式,备注自己的CSDN昵称,拉你进群,互相学习共同进步。

关于numpy.random模块,看这一篇文章就够了

  • 1. NumPy库介绍
  • 2. random 模块介绍
    • 常用的 `numpy.random` 函数概述:
    • 2.1 函数定义及参数说明
      • random.rand
      • random.randn
      • random.randint
      • random.choice
      • random.permutation
  • 3. 示例代码
    • 3.1 生成均匀分布的随机数
    • 3.2 生成标准正态分布的随机数
    • 3.3 生成随机整数
    • 3.4 从给定数组中随机抽样
    • 3.5 生成随机排序的序列
  • 4. 实际应用:蒙特卡洛模拟
    • 4.1 蒙特卡洛模拟估算圆周率
  • 5. 总结

在这里插入图片描述

1. NumPy库介绍

NumPy(Numerical Python)是Python编程语言的一个基础库,广泛用于科学计算、数据分析和机器学习。它提供了高效的多维数组(ndarray)以及针对这些数组的各种操作函数。NumPy因其高性能、简洁的API以及强大的数值计算能力而著称,是数据科学家、工程师和研究人员的常用工具。

NumPy不仅支持基本的数组操作,还包括线性代数、随机数生成、傅里叶变换等高级功能模块。这使得NumPy在处理大量数据时显得尤为重要。

2. random 模块介绍

numpy.random 模块提供了一系列随机数生成函数,涵盖各种分布类型。这些函数在模拟、数值仿真和统计学中非常有用。通过numpy.random,用户可以高效地生成伪随机数,并可以控制生成的伪随机数的分布类型和参数。

常用的 numpy.random 函数概述:

  • random.rand:生成均匀分布的随机数。
  • random.randn:生成标准正态分布的随机数。
  • random.randint:生成随机整数。
  • random.choice:从给定数组中生成随机样本。
  • random.permutation:返回一个随机排序的序列。

2.1 函数定义及参数说明

random.rand

创建指定形状的数组,数组中的值服从[0, 1)区间的均匀分布。

numpy.random.rand(d0, d1, ..., dn)

参数:

  • d0, d1, ..., dn:输出数组的形状。

返回:

  • 满足要求形状的随机值数组。

random.randn

创建指定形状的数组,数组中的值服从标准正态分布(均值为0,标准差为1)。

numpy.random.randn(d0, d1, ..., dn)

参数:

  • d0, d1, ..., dn:输出数组的形状。

返回:

  • 满足要求形状的标准正态分布随机值数组。

random.randint

生成随机整数,范围从低(包含)到高(不包含)。

numpy.random.randint(low, high=None, size=None, dtype=int)

参数:

  • low:随机整数的最低范围(包含)。
  • high:随机整数的最高范围(不包含),如果未指定,则生成范围为[0, low)。
  • size:输出形状。
  • dtype:输出数组的数据类型。

返回:

  • 随机整数数组。

random.choice

从给定的一维数组中随机抽取样本。

numpy.random.choice(a, size=None, replace=True, p=None)

参数:

  • a:一维数组,或整数(表示从np.arange(a)中抽取)。
  • size:输出样本数。
  • replace:布尔值,是否允许重复抽样。
  • p:与a相同长度的数组,每个元素被选中的概率。

返回:

  • 随机样本数组。

random.permutation

返回一个随机排序的序列。

numpy.random.permutation(x)

参数:

  • x:整数或数组。

返回:

  • 随机排序的数组。

3. 示例代码

通过以下示例代码,我们将展示numpy.random模块的具体用法。

3.1 生成均匀分布的随机数

这个示例展示了如何生成服从[0, 1)区间上的均匀分布随机数。

import numpy as np

# 生成一个二维数组,形状为(3, 2),元素为均匀分布随机数
random_array = np.random.rand(3, 2)
print("Random array with uniform distribution:\n", random_array)

输出示例:

Random array with uniform distribution:
 [[0.5488135  0.71518937]
 [0.60276338 0.54488318]
 [0.4236548  0.64589411]]

3.2 生成标准正态分布的随机数

这个示例展示了如何生成服从标准正态分布(均值为0,标准差为1)的随机数。

import numpy as np

# 生成一个一维数组,包含5个标准正态分布随机数
normal_array = np.random.randn(5)
print("Random array with standard normal distribution:\n", normal_array)

输出示例:

Random array with standard normal distribution:
 [ 1.76405235  0.40015721  0.97873798  2.2408932   1.86755799]

3.3 生成随机整数

这次我们示范如何生成指定范围内的随机整数。

import numpy as np

# 生成一个形状为(3, 3)的数组,元素为[0, 10)区间的随机整数
random_integers = np.random.randint(0, 10, (3, 3))
print("Random integer array:\n", random_integers)

输出示例:

Random integer array:
 [[3 7 9]
 [3 7 2]
 [5 4 7]]

3.4 从给定数组中随机抽样

我们可以从一个给定的数组(或整数范围)中抽取随机样本。

import numpy as np

# 从数组a中随机抽取3个元素
a = np.array([10, 20, 30, 40, 50])
choice_array = np.random.choice(a, 3)
print("Random choice from the array:\n", choice_array)

输出示例:

Random choice from the array:
 [30 10 20]

3.5 生成随机排序的序列

这个示例展示了如何对一个数组或整数范围进行随机排序。

import numpy as np

# 随机打乱一个数组
arr = np.array([1, 2, 3, 4, 5])
permuted_array = np.random.permutation(arr)
print("Randomly permuted array:\n", permuted_array)

输出示例:

Randomly permuted array:
 [3 5 1 2 4]

4. 实际应用:蒙特卡洛模拟

蒙特卡洛模拟是利用随机数生成来进行数值模拟的一种方法。在金融、物理、工程等领域有广泛应用。这里我们展示一个简单的蒙特卡洛法估算圆周率。

4.1 蒙特卡洛模拟估算圆周率

通过在单位正方形内生成随机点,计算落在单位圆内点的比例,可以估算圆周率。

import numpy as np

# 生成随机点数量
num_points = 10000

# 生成均匀分布的随机点
points = np.random.rand(num_points, 2)

# 计算落在单位圆内的点
inside_circle = np.sum(np.square(points).sum(axis=1) <= 1.0)

# 估算圆周率
pi_estimate = (inside_circle / num_points) * 4
print("Estimated value of Pi:", pi_estimate)

输出示例:

Estimated value of Pi: 3.148

通过增加 num_points 的数量,可以提升估算的准确度。

5. 总结

NumPy 是进行科学计算的强大工具,其 numpy.random 模块提供了丰富的随机数生成函数。这些函数不仅能够生成不同分布的随机数,还能在模拟、数值仿真和统计学等领域中发挥重要作用。

在这篇文章中,我们详细介绍了 numpy.random 中的几个常用函数,包括生成均匀分布的随机数、标准正态分布的随机数、随机整数、从给定数组中抽样以及生成随机排序的序列。通过这些函数,我们可以轻松实现各种随机数生成任务。

此外,我们还展示了蒙特卡洛模拟在估算圆周率中的具体应用,展示了 numpy.random 的实际应用场景。

掌握 numpy.random 模块,将大大提高我们在随机数生成和数值模拟方面的工作效率和准确性。如果你对 NumPy 及其功能有更多兴趣,建议进一步学习和探索。

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

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

相关文章

6千古诗文必背名句大全ACCESS\EXCEL数据库

古诗&#xff0c;是古代诗歌的一种体裁&#xff0c;又称古体诗或古风&#xff0c;指的是产生于唐代以前并和唐代新出现的近体诗&#xff08;又名今体诗&#xff09;相对的一种诗歌体裁。其特点是格律限制不太严格。 从小我们就被教“熟读唐诗三百首,不会吟诗也会吟”&#xff…

海外动态IP代理如何提高效率?

动态住宅IP代理之所以能够有效提升数据爬取的效率和准确性&#xff0c;主要归功于其提供的IP地址具有高度的匿名性和真实性。这些IP地址来自于真实的用户网络&#xff0c;因此相比于数据中心IP&#xff0c;它们更不容易被网站的安全系统标识为爬虫。此外&#xff0c;由于IP地址…

VSCode开发Python-Django入门

一、安装配置Python环境及配置Python环境变量 1、python安装包安装后&#xff0c;需要注意pip.exe和pip3.exe的安装&#xff1b; 2、环境变量需要配置两个目录&#xff1b; 3、验证python是否安装成功 通过cmd命令执行&#xff1a;python --version 查看python版本&#xff…

HTML+CSS+JS简易计算器

HTMLCSSJS简易计算器 index.html <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>简易计算器</t…

目标检测数据集 - 工地工人安全设备佩戴检测数据集下载「包含VOC、COCO、YOLO三种格式」

数据集介绍&#xff1a;工地工人安全设备佩戴检测数据集&#xff0c;真实场景数据生成增强后高质量图片数据&#xff0c;涉及场景丰富&#xff0c;比如楼宇建筑工地工人作业数据、道路建筑工地工人作业数据、室内工地工人作业数据、露天挖掘场景工人作业数据、工地工人自拍摆拍…

去除uni微信小程序button的边框

想要去除button的边框&#xff0c;如下未去除边框时&#xff0c;非常影响观感。 解决方法 使用伪元素::after&#xff0c;简单但是易忘&#xff0c;正常情况下,我直接是给button上加上一个类名直接设置border&#xff1a;none&#xff0c;但是这样是无效的&#xff0c;应该如下…

Windows搭建Nginx代理本地盘的文件(共享路径或本地路径)

文章目录 Windows搭建Nginx代理本地盘的文件 - 前言需求背景挂载网络共享路径检查连接状态下载Nginx编辑 Nginx 配置文件启动 Nginx检测Nginx是否成功启动使用方法远程共享路径示例本地文件示例 测试 Windows搭建Nginx代理本地盘的文件 - 前言 在开发过程中&#xff0c;确保文…

Android13 基座充电屏保

屏幕保护有两个设置可选&#xff1a;默认为插入基座充电时 通过DreamBackend启用屏保&#xff0c;并且保存选择的时机 //QSSI.13\packages\apps\Settings\src\com\android\settings\dream\WhenToDreamPicker.java Override protected boolean setDefaultKey(String key) {mBac…

数组和特殊矩阵的压缩存储

文章目录 一维数组二维数组特殊矩阵对称矩阵三角矩阵三对角矩阵稀疏矩阵三元组法十字链表法 一维数组 以一维数组A[0...n-1]为例&#xff0c;其存储结构关系式为 LOC ⁡ ( a i ) LOC ⁡ ( a 0 ) i L ( 0 ⩽ i < n ) \operatorname{LOC}\left(a_i\right)\operatorname{LO…

AI手语研究数据集;视频转视频翻译和风格化功能如黏土动画;AI检测猫咪行为;开放源码的AI驱动搜索引擎Perplexica

✨ 1: Prompt2Sign 多语言手语数据集&#xff0c;便捷高效用于手语研究。 Prompt2Sign 是一个全面的多语言手语数据集&#xff0c;旨在通过工具自动获取和处理网络上的手语视频。该数据集具有高效、轻量的特点&#xff0c;旨在减少先前手语数据集的不足之处。该数据集目前包含…

基于springboot+vue的公司资产网站(全套)

一、系统架构 前端&#xff1a;vue2 | element-ui 后端&#xff1a;springboot | mybatis 环境&#xff1a;jdk1.8 | mysql | maven | node 二、代码及数据库 三、功能介绍 01. 管理后台-登录 02. 管理后台-首页 03. 管理后台-个人中心-修改密码 04. 管理后台-个人…

CentOS7 部署单机版 ElasticSearch + Logstash

一、部署ElasticSearch Elasticsearch部署参考下面文章&#xff1a; CentOS7 部署单机版 elasticsearch-CSDN博客文章浏览阅读285次&#xff0c;点赞6次&#xff0c;收藏3次。ElasticSearch&#xff0c;用于检索、聚合分析和大数据存储https://blog.csdn.net/weixin_44295677…

N1912A P 系列双通道功率计

N1912A 双通道功率计 产品综述 <<<P 系列双通道功率计>>> Keysight N1912A P 系列双通道功率计可以提供峰值功率、峰均比、平均功率、上升时间、下降时间 NS 脉冲宽度测量。 “ 功能特点 30 MHz 视频带宽 能够以高达 100 MSa/s 的采样率执行单次实时捕…

从华为云OBS到AWS云上S3:迁移及相关事项

随着云计算的快速发展&#xff0c;企业越来越倾向于将数据存储和管理移到云端。华为云的对象存储服务&#xff08;OBS&#xff09;和亚马逊云服务&#xff08;AWS&#xff09;上的简单存储服务&#xff08;S3&#xff09;是两个备受欢迎的选择。对于那些考虑从华为云OBS迁移到A…

OrangePi AIpro 变身 Android 打包机

主板基本信息介绍 OrangePi AIpro&#xff0c;是香橙派联合华为精心打造&#xff0c;建设人工智能新生态而设计的一款开发板&#xff0c;这次为大家分享下我上手的这款 OrangePi AIpro 8GB&#xff08;算力达8TOPS&#xff09; 的一些小小的经验。 基本参数如下&#xff1a; …

【亲测有效】发现了适用于Mac用户的ChatGPT客户端登陆方法

项目场景&#xff1a; Mac用户的ChatGPT客户端登陆 问题描述 无法使用 解决方案&#xff1a; 1.下载登陆ChatGPT客户端 https://persistent.oaistatic.com/sidekick/public/C...https://persistent.oaistatic.com/sidekick/public/ChatGPT_Desktop_public_latest.dmg 2.登陆…

设计模式 21 备忘录模式 Memento Pattern

设计模式 21 备忘录模式 Memento Pattern 1.定义 备忘录模式是一种行为型设计模式&#xff0c;它允许你将一个对象的状态保存到一个独立的“备忘录”对象中&#xff0c;并在之后恢复到该状态。 2.内涵 主要用于以下场景&#xff1a; 需要保存对象状态以备恢复&#xff1a; 当…

Kubernetes集群调度

一.List-Watch 1.调度约束 Kubernetes 是通过 List-Watch **** 的机制进行每个组件的协作&#xff0c;保持数据同步的&#xff0c;每个组件之间的设计实现了解耦。 用户是通过 kubectl 根据配置文件&#xff0c;向 APIServer 发送命令&#xff0c;在 Node 节点上面建立 P…

【OCPP】ocpp1.6协议第3.13章节SmartCharging介绍及翻译

目录 3.13 SmartCharging智能充电-概述 智能充电的目标 关键功能 消息类型 负载管理 动态电量配置 总结 3.13 SmartCharging智能充电-译文 3.13.1 Charging Profile Purpose充电配置的目的 3.13.2 Stacking charging profile堆叠充电配置 3.13.3 Combining charging profile pu…

如何在线转换图片的格式?一键修改图片格式的方法

图片是日常生活和工作中的一种常用的内容展示类型&#xff0c;在使用图片的时候不同用途需要使用的图片格式也是不同的&#xff0c;比如我们手中有一张jpg格式图片&#xff0c;但是平台上传要求格式是png&#xff0c;那么怎样才能将jpg转png格式呢&#xff1f;下面将教大家图片…