Python中生成随机数,探索随机数的无限可能

news/2024/5/17 9:48:06

在Python中,生成随机数是一种常见的需求,无论是在模拟、游戏、密码生成还是数据科学中。Python提供了几个内置的库来生成随机数,其中最常用的是random模块。此外,对于更高级的用途,如密码学,我们还可以利用secrets模块。

使用random模块

random模块是Python中用于生成随机数的标准库,它提供了一系列方法来生成不同类型的随机数据。

生成随机浮点数

生成一个介于0到1之间的随机浮点数,可以使用random.random()方法。

import random# 生成一个0到1之间的随机浮点数
random_float = random.random()
print("随机浮点数:", random_float)

如果想要生成一个在指定范围内的随机浮点数,比如介于1到10之间,可以使用random.uniform(a, b)方法。

import random# 生成一个1到10之间的随机浮点数
random_float_range = random.uniform(1, 10)
print("1到10之间的随机浮点数:", random_float_range)

生成随机整数

生成一个随机整数,可以使用random.randint(a, b)方法,它会生成一个介于ab之间(包括ab)的整数。

import random# 生成一个1到10之间的随机整数
random_integer = random.randint(1, 10)
print("1到10之间的随机整数:", random_integer)

如果需要生成一个从start开始到end结束的随机整数(包括start,不包括end),可以使用random.randrange(start, end)方法。

# 生成一个1到10之间的随机整数(不包括10)
random_integer_range = random.randrange(1, 11)
print("1到10之间的随机整数(不包括10):", random_integer_range)

随机选择和随机排列

从序列中随机选择一个元素,可以使用random.choice(sequence)方法。

import random# 从列表中随机选择一个元素
random_choice = random.choice(['apple', 'banana', 'cherry'])
print("随机选择的元素:", random_choice)

随机打乱序列中的元素,可以使用random.shuffle(x[, random])方法。

import random# 随机打乱列表中的元素
list_to_shuffle = [1, 2, 3, 4, 5]
random.shuffle(list_to_shuffle)
print("随机打乱后的列表:", list_to_shuffle)

random模块的随机数生成器是基于伪随机数生成器(PRNG),这意味着如果你知道种子,就可以重现生成的随机数序列。为了确保随机性,可以在程序开始时使用random.seed()来设置随机种子,或者不设置以获得不同的随机数序列。

使用secrets模块

secrets模块是Python 3.6中引入的,用于生成加密安全的随机数。它主要用于生成安全敏感的随机数据,如密码、密钥等。secrets模块的随机数生成器是基于操作系统的随机性源,因此它比random模块更安全,更适合生成敏感数据。对于安全要求系数比较高的场景,可以考虑用这个模块来生成随机数。

生成加密安全的随机数

secrets模块提供了secrets.randbelow(upper_bound)方法,可以生成一个从0到upper_bound - 1的随机整数。

import secrets# 生成一个小于100的随机整数
secret_number = secrets.randbelow(100)
print("加密安全的随机整数:", secret_number)

此外,secrets模块还提供了secrets.token_bytes(n)secrets.token_hex(n)方法,用于生成随机字节和十六进制字符串。

import secrets# 生成一个长度为16字节的随机字节字符串
secret_bytes = secrets.token_bytes(16)
print("随机字节字符串:", secret_bytes)# 生成一个长度为16字节的随机十六进制字符串
secret_hex = secrets.token_hex(16)
print("随机十六进制字符串:", secret_hex)

使用numpy库

numpy是一个适用于科学计算的库,它也提供了生成随机数的方法,特别适合在处理大型数据集或数组时使用。需要说明的是,numpy不是python的标准库,是属于python的第三方库,使用的时候需要另外安装。

numpyrandom模块提供了类似于random模块的功能,并且可以生成多维数组。

import numpy as np# 生成一个3x3的随机浮点数数组
random_array = np.random.rand(3, 3)
print("3x3的随机浮点数数组:\n", random_array)# 生成一个3x3的随机整数数组,整数范围从0到99
random_int_array = np.random.randint(0, 100, size=(3, 3))
print("3x3的随机整数数组:\n", random_int_array)

总结一下

Python提供了多种生成随机数的方法,适用于不同的应用场景。random模块适用于一般的随机数生成需求,一般大多数编程的时候都可以使用,而secrets模块适用于需要更高安全性的场合。numpy库生成的随机数则在科学计算中非常有用。反正你看场景使用吧,不懂得如何使用,那就多google吧,多问问,没啥其他好办法。


http://www.mrgr.cn/p/13443867

相关文章

排序-八大排序FollowUp

FollowUp 1.插入排序 (1).直接插入排序 时间复杂度:最坏情况下:0(n^2) 最好情况下:0(n)当数据越有序 排序越快 适用于: 待排序序列 已经基本上趋于有序了! 空间复杂度:0(1) 稳定性:稳定的 public static void insertSort(int[] array){for (int i 1; i < array.length; i…

项目运行到手机端

运行到真机 手机和点到连在同一个wifi网络下面点击hbuiler上面的预览得到一个&#xff0c;network的网址这个时候去在手机访问&#xff0c;那么就可以访问网页了 跨域处理 这个时候可能会访问存在跨域问题 将uniapp的H5版本运行到真机进行调试&#xff0c;主要涉及到跨域问题…

Ubuntu 24.04 LTS (Noble Numbat) 正式版发布

Ubuntu 24.04 LTS (Noble Numbat) 正式版发布 Canonical 的第 10 个长期支持版本在性能工程、企业安全和开发人员体验方面树立了新标准 请访问原文链接&#xff1a;Ubuntu 24.04 LTS (Noble Numbat) 正式版发布&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。…

数组模拟双链表-java

通过数组来模拟双链表&#xff0c;并执行一些插入和删除的功能。 目录 一、问题描述 二、模拟思路 1.变量解释 2.数组初始化 3.在下标是k的结点后面插入一个结点 4.删除下标为k的结点 5.基本功能解释 三、代码如下 1.代码如下&#xff1a; 2.读入数据&#xff1a; 3…

Java设计模式 _结构型模式_桥接模式

一、桥接模式 1、桥接模式 桥接模式&#xff08;Bridge Pattern&#xff09;是一种结构型设计模式。用于把一个类中多个维度的抽象化与实现化解耦&#xff0c;使得二者可以独立变化。 2、实现思路 使用桥接模式&#xff0c;一定要找到这个类中两个变化的维度&#xff1a;如支…

使用LinkAI创建AI智能体,并快速接入到微信/企微/公众号/钉钉/飞书..

LinkAI 作为企业级一站式AI Agent 智能体搭建与接入平台,可以使用LinkAI创建专属智能体,并将它连接到并快速接入到微信/企微/公众号/钉钉/飞书/web等​ LinkAI 作为企业级一站式AI Agent 智能体搭建与接入平台,不仅为用户和客户提供能够快速搭建具备行业知识和个性化设定的 …

基于CodeMirror开发在线编辑器时遇到的问题及解决方案

需求:实现json在线编辑并支持校验,基于此使用了 CodeMirror在线编辑,jsonlint校验输入数据 // package.json:"dependencies": {"codemirror": "^5.53.2","core-js": "^3.8.3","jsonlint": "^1.6.3",…

【VMware vCenter】连接和使用vCenter Server嵌入式vPostgres数据库。

vCenter Server 早期支持内嵌(embedded)和外部(external)数据库,内嵌数据库就是vPostgres,基于VMware Postgres数据库(PostgreSQL数据库),外部数据库用的多的是Oracle数据库和SQL Server数据库。因为早期使用内嵌的PostgreSQL数据库只能用于小型环境,比如仅支持几十台…

对于 CF1107E 中 dp 状态设计的一点想法

我在这延伸谱线誊写勾勒 / 试图将歌唱的意义勘破不太想发到洛谷讨论区,就往这里放了。 我觉得现有的题解都没说明白为什么本题的状态和转移能覆盖所有情况,并且感觉也非常不自然,没见过的话感觉挺难发现这么一个东西。 然而这个 dp 其实是可以自然地推导出来的。 首先发现这…

线性代数-行列式-p1 矩阵的秩

目录 1.定义 2. 计算矩阵的秩 3. 矩阵的秩性质 1.定义 2. 计算矩阵的秩 3. 矩阵的秩性质 4. 自己补充点

网络应用层之(6)L2TP协议详解

网络应用层之(6)L2TP协议 Author: Once Day Date: 2024年5月1日 一位热衷于Linux学习和开发的菜鸟&#xff0c;试图谱写一场冒险之旅&#xff0c;也许终点只是一场白日梦… 漫漫长路&#xff0c;有人对你微笑过嘛… 全系列文档可参考专栏&#xff1a;通信网络技术_Once-Day的…

解决vscode连接远程服务器出现Bad owner or permissions on C:\\Users\\Administrator/.ssh/config 过程试图写入的管道不存在。

1.找到.ssh文件夹。它通常位于C:\Users2.右键单击.ssh文件夹,然后单击“属性”,选择“安全”3.单击“高级”。 单击“禁用继承”,单击“确定”。 将出现警告弹出窗口。单击“从此对象中删除所有继承的权限”。 4.此时所有用户都将被删除。添加所有者。在同一窗口中,单击“编…

TCP的三次握手过程

TCP 是面向连接的、可靠的、基于字节流的传输层通信协议。TCP 是面向连接的协议,所以使用 TCP 前必须先建立连接,而建立连接是通过三次握手来进行的...TCP是面向连接的、可靠的、基于字节流的传输层通信协议。 TCP是面向连接的协议,所以使用 TCP前必须先建立连接,而建立连接…

C++成员初始化列表

我们在类的构造函数中使用成员初始化列表可以带来效率上的提升&#xff0c;那么成员初始化列表在编译后会发生什么就是这篇文章要探究的问题 文章目录 引入成员初始化列表用成员初始化列表优化上面的代码成员初始化列表展开成员初始化列表的潜在危险 参考资料 引入 考虑下面这…

天地图路径规划功能实现

目录 1、天地图路径规划2、路径规划3、参数说明4、Demo 1、天地图路径规划 天地图Web服务API为用户提供HTTP/HTTPS接口&#xff0c;即开发者可以通过这些接口使用各类型的地理信息数据服务&#xff0c;可以基于此开发跨平台的地理信息应用。 Web服务API对所有用户开放。使用本…

windows密码存储以及hashdump所得信息解析

1. windows登录的明文密码,存储过程是怎么样的,密文存在哪个文件下,该文件是否可以打开,并且查看到密文 在Windows中密码通常不会以明文形式存储。系统会通过保存密码的哈希值来确保安全性。 这个过程涉及到NTLM或Kerberos身份认证协议,它们负责加密存储密码。 以下是存储…

【模板】生成函数 I

多项式与形式幂级数多项式:\(A(x)=\sum\limits_{i=0}^{n}a_ix^i\)。 形式幂级数:\(A(x)=\sum\limits_{i\ge0}a_ix^i\)。形式幂级数不用考虑其收敛域。形式幂级数(多项式)的运算 设 \(A(x)=\sum\limits_{i\ge0}a_ix^i,B(x)=\sum\limits_{i\ge0}b_ix^i\)。\(A(x)+B(x)=\sum\l…

两院院士泌尿外科专家吴阶平教授

吴阶平&#xff08;1917-2011&#xff09;&#xff0c;男&#xff0c;江苏常州人&#xff0c;1933年天津汇文中学毕业&#xff0c;保送到北平燕京大学医预科&#xff0c;1937年毕业于北平燕京大学获理学士学位&#xff0c;1942年毕业于北平协和医学院获医学博士学位&#xff0c…

用 Python 开发一个【GIF表情包制作神器】

用python成为了微信斗图届的高手然后,好多人表示:虽然存了很多表情包但似乎还不是很过瘾因为它不可以自己来定制我们可不可以根据一些表情素材然后自己制作专属表情包呢像这样本来小帅b想自己实现一个表情包制作器后来发现已经有人在 GitHub 分享了 主要功能就是 可以在原有的…

云原生Kubernetes: K8S 1.29版本 部署Sonarqube

一、实验 1.环境 &#xff08;1&#xff09;主机 表1 主机 主机架构版本IP备注masterK8S master节点1.29.0192.168.204.8 node1K8S node节点1.29.0192.168.204.9node2K8S node节点1.29.0192.168.204.10已部署Kuboard &#xff08;2&#xff09;master节点查看集群 1&…