【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 及其功能有更多兴趣,建议进一步学习和探索。

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

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

相关文章

产线虚拟现实vr仿真软件开发在线上能全面呈现企业品质和专业度

在数字化浪潮中&#xff0c;上海VR全景场景制作公司凭借其领先的VR全景制作技术&#xff0c;正为各行各业带来前所未有的沉浸式体验。无论是学校企业场地的生动展示&#xff0c;还是汽车内饰与外观的360度全景呈现&#xff0c;我们都能通过VR虚拟现实制作技术&#xff0c;让您的…

斯坦福大学ALOHA家务机器人团队发布了最新研究成果—YAY Robot语言交互式操作系统

ALOHA YAY 演示视频-智能佳 斯坦福的ALOHA家务机器人团队&#xff0c;发布了最新研究成果—Yell At Your Robot&#xff08;简称YAY&#xff09;&#xff0c;有了它&#xff0c;机器人的“翻车”动作&#xff0c;只要喊句话就能纠正了&#xff01; 标ALOHA2协作平台题 而且机器…

SpringSecurity登录和校验流程简述

认证&#xff1a; 验证当前访问系统的是不是本系统的用户&#xff0c;并且要确认具体是哪个用户 授权&#xff1a; 经过认证后判断当前用户是否有权限进行某个操作 一、入门案例实现 搭建springboot工程后&#xff0c;创建启动类和Controller&#xff0c;引入SpringSecurity依…

CCF- CSP 2018.12 - 1.2题 Java语言解题

2018.12-1 小明上学 import java.util.Scanner;public class text01_RedLight {public static void main(String[] args) {Scanner scanner new Scanner(System.in);int r scanner.nextInt();int y scanner.nextInt();int g scanner.nextInt();int n scanner.nextInt();in…

springboot 两个相同类型的Bean使用@Resouce加载

问题描述 有两个相同类型的Bean 使用Service等注解注入或者Bean注入启动以后报错&#xff1a; qualifying bean of type com.fasterxml.jackson.databind.ObjectMapper available: expected single matching bean but found 2提示有相同的类型两个。 解决 * 每个Bean Resour…

第15章-超声波避障功能 HC-SR04超声波测距模块详解STM32超声波测距

这个是全网最详细的STM32项目教学视频。 第一篇在这里: 视频在这里 STM32智能小车V3-STM32入门教程-openmv与STM32循迹小车-stm32f103c8t6-电赛 嵌入式学习 PID控制算法 编码器电机 跟随 15.1-超声波测距 完成超声波测距功能、测量数据显示在OLED屏幕上 硬件介绍 使用&#…

Creo装配体中只显示一部分零部件

从模型树中选中要显示的零部件&#xff0c;也可以结合Ctrl框选的方式选择对象。然后在模型树右击等会弹出选项&#xff0c;点选----即可

AD23中一些好用的功能

1.关闭在线DRC功能&#xff0c;可以避免布线时候一卡一卡的问题&#xff1a; 取消在线DRC的勾选&#xff1a; 2.AD的在线封装库&#xff0c;非常好用&#xff1a; 如何优雅地服用AD 21的在线元件库 – 吴川斌的博客 (mr-wu.cn) 3.如何恢复Altium Designer23默认窗口布局 打开…

小红书推流机制底层逻辑

小红书推流机制底层逻辑 很多做运营的朋友问小红薯怎么玩❓ 小红书的核心逻辑流量是不是玄学❓ 今天就来说说小红书的流量算法机制&#x1f525; ①电脑审核 ②分配初始流量 ③增加流量 ④推荐结束

DINO中为什么教师模型用大图,学生模型用小图

在 DINO&#xff08;可以理解为由DIstillation和NO labels的缩写&#xff09;中&#xff0c;使用不同的图像裁剪策略对教师模型和学生模型进行训练有其特定的原因。具体来说&#xff0c;教师模型使用大图&#xff08;global views&#xff09;&#xff0c;学生模型则同时使用大…

鸿蒙OS开发:【一次开发,多端部署】(音乐专辑主页)

一多音乐专辑主页 介绍 本示例展示了音乐专辑主页。 头部返回栏: 因元素单一、位置固定在顶部&#xff0c;因此适合采用自适应拉伸&#xff0c;充分利用顶部区域。专辑封面: 使用栅格组件控制占比&#xff0c;在小尺寸屏幕下封面图与歌单描述在同一行。歌曲列表: 使用栅格组…

LVM和配额管理

文章目录 一、LVM1.1 LVM概述1.2 LVM的管理命令1.3 创建LVM的过程第一步&#xff1a;先创建物理卷第二步&#xff1a;创建逻辑卷组 / 扩容第三步&#xff1a;创建逻辑卷 / 扩容对ext4文件系统的管理 1.4 删除LVM 二、磁盘配额2.1 磁盘配额概述2.2 磁盘配额命令2.3 磁盘配额设置…

从ZooKeeper切换到ClickHouse-Keeper,藏着怎样的秘密

本文字数&#xff1a;7772&#xff1b;估计阅读时间&#xff1a;20 分钟 作者&#xff1a;博睿数据 李骅宸&#xff08;太道&#xff09;& 小叮当 本文在公众号【ClickHouseInc】首发 本系列前两篇内容&#xff1a; 从ES到ClickHouse&#xff0c;Bonree ONE平台更轻更快&a…

vue3学习(三)

前言 继续接上一篇笔记&#xff0c;继续学习的vue的组件化知识&#xff0c;可能需要分2个小节记录。前端大佬请忽略&#xff0c;也可以留下大家的鼓励&#xff0c;感恩&#xff01; 一、理解组件化 二、组件化知识 1、先上知识点&#xff1a; 2、示例代码 App.vue (主页面) …

数据恢复:手机数据恢复,盘点7个有效手机恢复方法

你知道吗&#xff0c;超过 70% 的智能手机用户都曾有过数据丢失的经历&#xff1f;如果你曾经丢失过手机中的重要文件&#xff0c;别担心&#xff0c;本文有解决办法。在本文中&#xff0c;我们将告诉你如何使用简单的步骤恢复手机中丢失的数据。无论你是不小心删除了文件还是手…

go使用letteravatar生成圆形透明头像图标

官网地址&#xff1a;GitHub - disintegration/letteravatar: Letter avatar generation for Go 我对其中函数改了一下&#xff0c;支持多个字符&#xff0c;效果如下&#xff1a; func TestCreateAvatar(t *testing.T) {GenerateAvatar("Bird Fish", 0, "Bird…

stm32 FLYMCU串口刷机:程序文件不是0x8000000和0x20000000区域的”解决办法。

你想使用串口刷机&#xff0c;用FLYMCU &#xff0c; 刷入的bin 文件是不带地址的&#xff0c;得刷入HEX文件 才可以&#xff0c;因为程序并不知道是从0x8000000开始的&#xff0c; 如果必须得刷入bin 那就得用stm32Cube programmer 这个软件 也可以使用ST-LINK&#xff08;S…

Word如何绘制三线表及设置磅值

插入表格&#xff0c; 开始 边框 边框和低温 设置磅值 先全部设置为无边框 上边 1.5 0.5 以上内容未完善&#xff0c;请等待作者更新

qmt量化交易策略小白学习笔记第7期【qmt策略之股票快照指标】

qmt策略之股票快照指标 qmt更加详细的教程方法&#xff0c;会持续慢慢梳理。 也可找寻博主的历史文章&#xff0c;搜索关键词查看解决方案 &#xff01; 感谢关注&#xff0c;需免费开通量化回测与咨询实盘权限&#xff0c;可以和博主联系&#xff01; 股票快照指标 提供标…

窄通道、非液压、超续航、更安全,地牛AGV小车诠释高效物流!

agv 在智能时代&#xff0c;替代简单、机械、重复以及重体力工作的智能机器设备成为未来发展的趋势。这种趋势不仅可以提高工作效率和质量&#xff0c;还可以解放人力资源&#xff0c;使其更好地应用于创造性和高级智能任务上。 这不&#xff0c;现在有越来越多的工厂开始使用…