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

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

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

💬 博主粉丝群介绍:① 群内高中生、本科生、研究生、博士生遍布,可互相学习,交流困惑。② 热榜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 及其功能有更多兴趣,建议进一步学习和探索。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【软件设计师】算法

1、算法的效率 时间复杂度:程序从开始到结束所需要的时间 空间复杂度&#xff1a;算法在运行过程中临时占用存储空间大小的度量 时间渐近复杂度&#xff1a;时间复杂度由最高次幂决定(判断大小技巧&#xff1a;将n10代入&#xff09; O(log2 n):二分查找法 O(n&#xff09;:for…

720VR三维立体小程序源码系统 手机电脑端自适应 前后端分离 带完整的安装代码包以及搭建教程

系统概述 720VR 三维立体小程序源码系统是基于先进的技术和理念打造而成的综合性平台。它融合了虚拟现实技术、移动互联网技术以及计算机编程技术&#xff0c;旨在为用户提供沉浸式的 720 度全景体验。 该系统的设计充分考虑了用户的需求&#xff0c;无论是在手机端还是电脑端…

从零学爬虫:使用比如说说解析网页结构

新书上架~&#x1f447;全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一、引言 二、网页结构概述 示例&#xff1a;查看网页结构 三、使用比如说说解析网页 1.…

抖音小程序如何生成二维码

1.页面结构 <image src{{imgUrl}}></image>2.代码结构 onLoad(options) {if (options.param) {var qrCode 13246897451257 //传入生成二维码的字符串this.generateQRCode(qrCode);}},//调起第三方库qrCodegenerateQRCode(text) {//调用了qrCode里面的apiconst api…

uniapp App去除iOS底部安全区域白边

未设置的情况下&#xff0c;iOS底部安全区域白边 如图&#xff1a; 去除方法&#xff1a; 在 mainfest.json 中加入一下代码&#xff1a; "safearea" : {"bottom" : {"offset" : "none"} }, 去除效果展示&#xff1a;

HTTP请求拦截器链

文章目录 HTTP请求拦截器链需求定义写一个Controller方法接口写三个http请求拦截器把拦截器加入到配置中&#xff0c;并且配置拦截规则在postman里面发送请求&#xff0c;看下测试结果是否正确 HTTP请求拦截器链 需求定义 我们写一个包含三个HTTP请求拦截器的拦截器链&#x…

盲人无障碍设施建设:科技之光照亮前行之路

在这个快速发展的时代&#xff0c;科技的每一次进步都在悄然改变着我们的生活&#xff0c;尤其在提升特殊群体生活质量方面&#xff0c;展现出前所未有的力量。今天&#xff0c;让我们聚焦于盲人无障碍设施建设这一重要话题&#xff0c;通过一款名为“蝙蝠避障”的辅助软件&…

饲料粉碎混合机组:打造精细化养殖

饲料粉碎混合机组是畜牧业和养殖业中不可或缺的设备。它集饲料粉碎和混合于一体&#xff0c;可以高效地处理各种饲料原料&#xff0c;提高饲料的均匀度和营养价值。 具体来说&#xff0c;饲料粉碎混合机组的主要功能包括将饲料原料进行粉碎&#xff0c;增加其表面积和调质粒度…

小程序唯品会Authorization sign

声明 本文章中所有内容仅供学习交流使用&#xff0c;不用于其他任何目的&#xff0c;抓包内容、敏感网址、数据接口等均已做脱敏处理&#xff0c;严禁用于商业用途和非法用途&#xff0c;否则由此产生的一切后果均与作者无关&#xff01;wx a15018601872 本文章未…

13.Redis之数据库管理redis客户端JAVA客户端

1.数据库管理 mysql 中有一个重要的概念,database 1个 mysql 服务器上可以有很多个 database1个 database 上可以有很多个 表mysql 上可以随心所欲的 创建/删除 数据库~~ Redis 提供了⼏个⾯向 Redis 数据库的操作&#xff0c;分别是 dbsize、select、flushdb、flushall 命令…

Web漏洞:网络安全的隐形杀手

随着互联网的深入发展&#xff0c;Web应用程序已成为企业和个人生活中不可或缺的一部分。然而&#xff0c;随着Web应用的普及&#xff0c;网络安全问题也日益凸显&#xff0c;其中Web漏洞是网络安全领域面临的重大挑战之一。本文将详细探讨一些常见的Web漏洞及其潜在的危害&…

期望薪资25K,新浪微博测试4轮面试,没想到过了。。

一面60min 1、离职原因 2、简单的算法题&#xff0c;就是我会什么让写什么&#xff1a; 冒泡排序&#xff0c;二分查找&#xff08;其实这么简单&#xff0c;我还是在指引下写出来的&#xff0c;自己实在太菜&#xff09; 3、简历问答&#xff08;随机抽几个点问&#xff0…

弘君资本:沪指跌0.46%,电力板块逆市爆发,半导体板块强势

28日&#xff0c;沪指早盘窄幅震动&#xff0c;午后回落走低&#xff1b;深证成指、创业板指大幅下探&#xff1b;两市成交额小幅萎缩。 截至收盘&#xff0c;沪指跌0.46%报3109.57点&#xff0c;深证成指跌1.23%报9391.05点&#xff0c;创业板指跌1.35%报1806.25点&#xff0c…

AutoDL搭建 ChatGLM3

租用新实例 这里选择的西北 B 区、RTX 409024GB 创建虚拟环境并激活 # 安装虚拟环境至数据盘 conda create --prefix /root/autodl-tmp/envs/chatglm3-demo python3.10# 激活虚拟环境 conda activate /root/autodl-tmp/envs/chatglm3-demo拉取ChatGLM3仓库代码 # 开启学术…

无人机+EasyDSS互联网视频平台:构建秸秆焚烧监控的“天眼”系统

一、方案背景 在每年的夏收时节&#xff0c;秸秆禁烧成为各地政府面临的一项重要任务。随着夏收季节的结束&#xff0c;大量农作物秸秆的处理问题逐渐凸显。一方面农作物种植面积辽阔&#xff0c;禁烧区域面积较大&#xff0c;监管巡逻人员的数量有限&#xff0c;无法全面顾及…

解锁数据奥秘,SPSS for Mac/WIN助您智赢未来

在信息爆炸的时代&#xff0c;数据已成为推动社会进步和企业发展的核心动力。但如何将这些海量数据转化为有价值的洞见&#xff0c;却是摆在每一位决策者面前的难题。IBM SPSS Statistics&#xff0c;一款专业的统计分析软件&#xff0c;凭借其强大的功能和易用的界面&#xff…

前端AI 工具对开发效率提升的探索

1、AI会100% 取代前端工程师吗&#xff1f; AI技术在未来可能会改变程序员的工作方式&#xff0c;将显著减少开发者的数量&#xff0c;但不太可能完全替代程序员。 AI 对技术的影响&#xff1a;可以大幅度提效。 提问AI模型&#xff1a; AI能取代开发者吗&#xff1f; AI 目前…

合作伙伴推广不积极?跟奖金到账时间有关!

在推广返现活动中&#xff0c;对于合作伙伴推广者来说&#xff0c;奖金是否及时到账是他们最关心的问题之一。如果品牌主一直不审批奖励数据&#xff0c;推广者则无法及时收到奖金&#xff0c;这很容易影响他们的推广积极性和忠诚度。怎样能够提高奖励审核的效率呢&#xff1f;…

Llama 3 CPU推理优化指南

备受期待的 Meta 第三代 Llama 现已发布&#xff0c;我想确保你知道如何以最佳方式部署这种最先进的 (SoTA) LLM。在本教程中&#xff0c;我们将重点介绍如何执行仅权重量化 (WOQ) 来压缩 8B 参数模型并改善推理延迟&#xff0c;但首先&#xff0c;让我们讨论一下 Meta Llama 3…

七大获取免费https证书的方式

想要实现https访问最简单有效的的方法就是安装SSL证书。只要证书正常安装上以后&#xff0c;浏览器就不会出现网站不安全提示或者访问被拦截的情况。下面我来教大家怎么去获取免费的SSL证书&#xff0c;又如何安装证书实现https访问。 一、选择免费SSL证书提供商 有多家机构提…