一篇搞懂Python中的随机数

news2025/2/25 15:30:19

在 python 中生成随机样本的所有你需要的示例列表

长按关注《Python学研大本营》,加入读者群,分享更多精彩 扫码关注《Python学研大本营》,加入读者群,分享更多精彩

在这篇博客中,我将演示如何根据不同的需求在python中生成样本随机数。使用随机和 Numpy。

import random
import numpy as np

内容

  • 场景1:获取随机整数

  • 场景2:获取带小数的随机数

  • 场景3:获取具有已知统计数据/分布的随机数

  • 场景4:使用现有的数字列表

场景一:获取随机整数

如果您只需要 0 到 10 之间的随机整数:

random.randint(0, 10)

# 7

如果您需要 0 到 10 之间的随机整数列表(例如 15):

np.random.randint(0, 10, 15)

# array([4, 4, 3, 0, 0, 1, 6, 9, 5, 3, 1, 6, 8, 5, 9])

如果你想得到一个非常随机和超大的整数,你可以这样做:

import time
int(time.time())

# 1669855560

场景二:获取带小数的随机数

获取 0 到 1 之间的随机数:

random.random()

# 0.4353251333114442

获取 0 到 10 之间的随机数:

random.uniform(0, 10)

# 9.210714292877288

如果您需要 0 到 10 之间的随机数列表(例如 5):

np.random.uniform(0, 10, 5)

# array([8.70816807, 5.13392407, 0.4998664 , 5.97627955, 2.15261284])

场景三:获取具有已知统计数据/分布的随机数

如果您已经知道所需样本的均值、众数和最大值,您可能想尝试三角函数。它有一个很酷的参数,称为模式:分布峰值出现的值。该值必须满足条件 left <= mode <= right。如果我们将它设置为 5,样本将更有可能出现在 5 左右。

np.random.triangular(0, 5, 10, 5) # left, mode, right, sample

# [3.7525956  5.16902974 3.79206193 8.46765312 6.23403873]

如果您想从二项分布中抽取样本,您可以尝试一个名为binomial的函数。如果我们设置 n = 20,p = 0.25,大小为 2000:

sample = np.random.binomial(20, 0.25, 2000)
import matplotlib.pyplot as plt
plt.hist(sample)

当您想从给定的均值 (50) 和标准差 (3) 生成随机数时:

random.normalvariate(50,3)

# 49.25030663269399

当您想创建一个随机数列表(例如 5)时,给定一个已知的均值 (50) 和一个标准差 (3):

[random.normalvariate(50,3) for _ in range(5)]

# [49.873333367806644, 45.72729827453879, 47.69029669578644, 
# 48.25661520735196, 47.26944802688148]

np.random.normal(50, 3, 5)

# array([47.18605431, 48.9894249 , 49.50258396, 49.85496526, 48.1503549 ])

当您想生成总和为某个值 (1) 的随机数列表(例如 10)时,您将需要名为dirichlet的函数。

sample = np.random.dirichlet(np.ones(10), size=1)
print(sample)
print(np.sum(sample))

# [[0.23988202 0.08378129 0.19439318 0.04282444 0.01568082 0.04033996
#   0.07864523 0.10856321 0.18118435 0.0147055 ]]

# 1.0000000000000002

场景四:使用现有的数字列表

假设我们有一个数字列表,如下所示:

sample = np.random.randint(0, 10, 20)
sample

# array([0, 3, 1, 1, 0, 2, 5, 1, 0, 7, 3, 6, 6, 9, 3, 7, 0, 5, 6, 6])

如果你想随机洗牌样本:

np.random.shuffle(sample)
sample

# array([1, 3, 7, 5, 3, 0, 6, 0, 0, 1, 3, 2, 9, 6, 6, 7, 6, 1, 5, 0])

如果要从样本中随机获取 5 个元素:

for _ in  range ( 5 ): 
  print (np.random.choice(sample)) 

# 1 
# 7 
# 6 
# 9 
# 0

如果你想随机排列一个序列或返回一个排列的范围,下面是你可以做什么的几个例子:

np.random.permutation( 10 ) 

# array([2, 5, 0, 3, 1, 7, 8, 4, 6, 9])

 np.random.permutation(sample) 

# array([2, 0, 3 , 9, 6, 0, 3, 6, 5, 5, 6, 0, 7, 6, 0, 1, 1, 1, 7, 3])

 arr = np.arange( 9 ).reshape(( 3 , 3 )) 
np.random.permutation(arr) 

# array([[3, 4, 5], 
# [6, 7, 8], 
# [0, 1, 2]])

结论

这篇简短的博客总结了许多在 python 中生成随机数的流行技术。了解这些技巧应该可以帮助您根据需要生成虚拟数据。

推荐书单

《PyTorch深度学习简明实战 》

本书针对深度学习及开源框架——PyTorch,采用简明的语言进行知识的讲解,注重实战。全书分为4篇,共19章。深度学习基础篇(第1章~第6章)包括PyTorch简介与安装、机器学习基础与线性回归、张量与数据类型、分类问题与多层感知器、多层感知器模型与模型训练、梯度下降法、反向传播算法与内置优化器。计算机视觉篇(第7章~第14章)包括计算机视觉与卷积神经网络、卷积入门实例、图像读取与模型保存、多分类问题与卷积模型的优化、迁移学习与数据增强、经典网络模型与特征提取、图像定位基础、图像语义分割。自然语言处理和序列篇(第15章~第17章)包括文本分类与词嵌入、循环神经网络与一维卷积神经网络、序列预测实例。生成对抗网络和目标检测篇(第18章~第19章)包括生成对抗网络、目标检测。

本书适合人工智能行业的软件工程师、对人工智能感兴趣的学生学习,同时也可作为深度学习的培训教程。

作者简介:

日月光华:网易云课堂资深讲师,经验丰富的数据科学家和深度学习算法工程师。擅长使用Python编程,编写爬虫并利用Python进行数据分析和可视化。对机器学习和深度学习有深入理解,熟悉常见的深度学习框架( PyTorch、TensorFlow)和模型,有丰富的深度学习、数据分析和爬虫等开发经验,著有畅销书《Python网络爬虫实例教程(视频讲解版)》。

链接:https://item.jd.com/13528847.html

精彩回顾

《Pandas1.x实例精解》新书抢先看!

【第1篇】利用Pandas操作DataFrame的列与行

【第2篇】Pandas如何对DataFrame排序和统计

【第3篇】Pandas如何使用DataFrame方法链

【第4篇】Pandas如何比较缺失值以及转置方向?

【第5篇】DataFrame如何玩转多样性数据

【第6篇】如何进行探索性数据分析?

【第7篇】使用Pandas处理分类数据

【第8篇】使用Pandas处理连续数据

【第9篇】使用Pandas比较连续值和连续列

【第10篇】如何比较分类值以及使用Pandas分析库

长按关注《Python学研大本营》

长按二维码,加入Python读者群

扫码关注《Python学研大本营》,加入读者群,分享更多精彩

https://towardsdev.com/all-kinds-of-randoms-in-python-9e382b23fb7b

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

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

相关文章

Docker三剑客——Docekr Swarm

目录 一、概述 二、Swarm 的核心概念 1. Node&#xff08;节点&#xff09; 2. Service&#xff08;服务&#xff09; 3. Task&#xff08;任务&#xff09; 三、Swarm 服务的运行部分 1. 工作节点 2. 服务、任务和容器 3. 任务和调度 4. 副本服务和全局服务 四、Swa…

3. 【prometheus 学习】prometheus数据类型

prometheus 四种数据类型学习及测试 安装 1&#xff09;从官网下载对应版本的二进制压缩包并解压 2&#xff09;新建prometheus.yml 文件&#xff0c;静态指定抓取本机的9091端口&#xff0c;设置采样时间2秒1次&#xff0c;方便一会测试。 scrape_configs:- job_name: defin…

单细胞UMAP图只标记特定细胞群、圈定细胞群及坐标轴修改

最近有小伙伴私信我&#xff0c;如下的单细胞UMAP图怎么做&#xff1f;是啥样的图呢&#xff1f;就是UMAP图上其他群是灰色的&#xff0c;只有某个群或者某几个群是标记颜色的&#xff0c;比较突出。其实很简单&#xff0c;一种办法可参考我们之前写过的ggplot做UMAP图&#xf…

uni-app使用蓝牙

目录 前言 连接蓝牙 开启蓝牙适配器 发现蓝牙 连接蓝牙 收发蓝牙数据 获取服务ID 获取特征值 读取蓝牙数据 写蓝牙数据 遇到的坑 获取serviceId的坑 特征值不支持读写 notify成功后立刻写蓝牙数据 工具方法 前言 原因是公司要搞个共享单车给内部员工使用&#…

32位浮点数表示方法

今天开始给大家介绍计算机组成原理课程&#xff0c;本文主要内容是32位浮点数表示方法。 一、32位浮点数构成 32位浮点数是计算机中常见的一种数据类型&#xff0c;该数占据32bit空间&#xff0c;可以表示较大范围内的整数和小数。32位浮点数由三部分组成&#xff0c;分别是符…

Java集合List、Set、Map底层源码解析

目录集合介绍MapHashMapLinkedHashMapHashTablePropertiesCollectionListArrayListVectorLinkedListSetHashSetLinkedHashSetTreeSet集合介绍 为什么使用集合&#xff1f; 当我们想要保存一组数据时&#xff0c;可以使用到的变量类型有集合和数组。那么就像说一下数组的局限性…

1.9

完善案例 ​ this.$nextTick(function () {this.$refs.input.focus()})}​ //点击编辑直接获取焦点 this.$refs.input.focus() //但是这种写法 由于input是用v-show控制的 所以执行了上面代码 改变了isEdit值 但是不会立马去重新解析模板 input框还没有出来 //将handleedit回调…

springboot+xxl-job初体验

在日常开发中经常遇到任务调度的需求&#xff0c;下面体验一下分布式调度xxl-job。 1、常见定时任务的实现方式 Java自带的java.util.Timer类ScheduledExcutorServiceSpringboot自带的EnableScheduling注解Quartz框架Elastic-job框架XXL-JOB框架 下面对xxl-job实现任务调度尝…

【TypeScript】TS进阶-函数重载(七)

&#x1f431;个人主页&#xff1a;不叫猫先生 &#x1f64b;‍♂️作者简介&#xff1a;前端领域新星创作者、华为云享专家、阿里云专家博主&#xff0c;专注于前端各领域技术&#xff0c;共同学习共同进步&#xff0c;一起加油呀&#xff01; &#x1f4ab;系列专栏&#xff…

一文读懂电商数字员工究竟是什么?| RPA铺第1期

百度的曦灵&#xff0c;中核的核小智、万科集团数字员工“崔筱盼”都曾在2022年度爆火&#xff0c;数字员工一夜之间成为众多行业追捧的对象&#xff0c;那么&#xff0c;他/她们究竟代表着什么&#xff0c;对企业而言&#xff0c;是噱头大于收益&#xff0c;还是收益大于噱头呢…

简单的客户端服务器(多线程)基于json通信

这是一个客户端和服务器通信的小项目&#xff0c;小编自己手写了一个json工具&#xff0c;测试比jsoncpp&#xff0c;protobuf "效率更高"&#xff08;浅拷贝&#xff09;&#xff0c;改写成深拷贝效率会急剧下降&#xff08;小编能力有限&#xff0c;知识点&#xf…

技术分享 | Spring Boot 异常处理

说到异常处理&#xff0c;我们都知道使用 try-catch 可以捕捉异常&#xff0c;可以 throws 抛出异常。那么在 Spring Boot 中我们如何处理异常&#xff0c;如何更优雅的处理异常&#xff0c;如何全局处理异常。是本章讨论解决的问题。Java 异常类首先让我们简单了解或重新学习下…

Android开发-AS学习(一)

完整项目最精简流程&#xff1a;Android <-> 接口 <-> 数据库Android开发工具&#xff1a;Android Studio项目目录信息&#xff1a;一、控件1.1 TextView基础属性描述layout_width组件的宽度layout_height组件的高度id为TextView设置一个组件idtext设置显示的文本内…

Linux 学习笔记(借鉴黑马程序员Linux课程)

Linux视频课程 简介 Linux诞生于1991年&#xff0c;由林纳斯托瓦兹在21岁时完成。此后成为最为流行的服务器操作系统之一。 Linux内核和系统发行版 由Linux系统内核和系统级应用程序两部分组成。 内核提供系统最核心的功能&#xff0c;如&#xff1a;调度CPU、调度内存、调…

【笑小枫的按步照搬系列】Redis多系统安装(Windows、Linux、Ubuntu)

笑小枫&#x1f495; 欢迎来到笑小枫的世界&#xff0c;喜欢的朋友关注一下我呦&#xff0c;大伙的支持&#xff0c;就是我坚持写下去的动力。 微信公众号&#xff1a;笑小枫 笑小枫个人博客&#xff1a;https://www.xiaoxiaofeng.com Windows 下安装 方式一&#xff1a;https…

HCL(新华三模拟器)如何连接CRT及改界面颜色

我使用的HCL版本是2.1.1官网下载连接&#xff1a;https://www.h3c.com/cn/Service/Document_Software/Software_Download/Other_Product/H3C_Cloud_Lab/Catalog/HCL/&#xff0c;一键直达下载官网这个版本可以适配virtualbox的5.2.44的版本&#xff0c;同时支持华为的ensp模拟器…

Spring Security 表单配置(一)

Spring Security 表单配置&#xff08;一&#xff09;工具版本及环境参考资源配置详细说明工具版本及环境 工具&#xff1a; IDEA 2021.3 Maven 3.8.6 JDK 8 Spring Boot 2.7.7 Spring Securiity 5.7.6 参考资源 Spring Security官网: https://docs.spring.io/spring-security…

javaEE 初阶 — 常见的锁策略

文章目录1. 乐观锁 vs 悲观锁2. 互斥锁 vs 读写锁3. 重量级锁 vs 轻量级锁4. 自旋锁 vs 挂起等待锁5. 公平锁 vs 非公平锁6. 可重入锁 vs 不可重入锁7. synchronized 是哪种锁8. 相关面试题1. 乐观锁 vs 悲观锁 乐观锁 指的是预测锁竞争不是很激烈&#xff0c;也就是指这里做的…

排列组合两个列表中的元素 product(a,b)

【小白从小学Python、C、Java】【计算机等级考试500强双证书】【Python-数据分析】排列组合两个列表中的元素product(a,b)关于以下python代码表述错误的一项是?from itertools import producta [1,2,3]b [4,5,6]print("【显示】a",a)print("【显示】b",…

修改Keil开发环境背景(修改为黑色主题)

修改Keil开发背景&#xff08;修改为黑色主题&#xff09;引言步骤总结引言 我们平时在Keil uVision5下开发单片机/嵌入式程序的时候&#xff0c;如果始终用的是官方的主题背景&#xff0c;往往会因为背景太白了&#xff0c;而导致视疲劳。我们使用VSCode往往不会有这种困扰&a…