「Python系列」Python random模块、hashlib模块

本文涉及的产品
注册配置 MSE Nacos/ZooKeeper,118元/月
应用实时监控服务-可观测链路OpenTelemetry版,每月50GB免费额度
任务调度 XXL-JOB 版免费试用,400 元额度,开发版规格
简介: `random` 模块在 Python 中提供了多种生成随机数的方法

一、Python random模块

random 模块在 Python 中提供了多种生成随机数的方法。以下是 random 模块中一些最常用的方法:

1. random.random()

生成一个 [0.0, 1.0) 范围内的随机浮点数。

import random
print(random.random())  # 输出例如 0.572348984589

2. random.uniform(a, b)

生成一个 [a, b) 范围内的随机浮点数。

import random
print(random.uniform(1.5, 4.2))  # 输出例如 2.3456789012

3. random.randint(a, b)

生成一个 [a, b] 范围内的随机整数。

import random
print(random.randint(1, 10))  # 输出例如 5

4. random.randrange(start, stop, step)

生成一个从 startstop(不包括 stop)范围内的随机整数,步长为 step

import random
print(random.randrange(1, 10, 2))  # 输出例如 1, 3, 5, 7, 9

5. random.choice(seq)

从非空序列 seq 中随机选择一个元素。

import random
my_list = ['apple', 'banana', 'cherry']
print(random.choice(my_list))  # 输出例如 'banana'

6. random.shuffle(seq)

将序列 seq 中的元素随机排序,原地修改 seq

import random
my_list = [1, 2, 3, 4, 5]
random.shuffle(my_list)
print(my_list)  # 输出例如 [2, 1, 5, 4, 3]

7. random.sample(seq, k)

从序列 seq 中随机选择 k 个不重复的元素,返回一个列表。

import random
my_list = [1, 2, 3, 4, 5]
print(random.sample(my_list, 3))  # 输出例如 [3, 1, 4]

8. random.bytes(n)

生成 n 个随机字节。

import random
print(random.bytes(10))  # 输出例如 b'\x12\x3e\x54\x76\x98\xba\xdc\xfe\x12\x34'

9. random.seed(a)

设置随机数生成器的种子值。如果两次调用 random.seed(a) 使用了相同的种子值 a,那么之后的随机数序列将会是相同的。

import random
random.seed(10)
print(random.random())  # 每次使用相同的种子都会得到相同的随机数

10. random.getrandbits(k)

生成一个 k 位长的随机整数。

import random
print(random.getrandbits(16))  # 输出例如 61703

11. random.triangular(low, high, mode)

import random

# 生成一个低为low、高为high、众数为mode的三角形分布的随机浮点数
print(random.triangular(1, 10, 5))

12. random.betavariate(alpha, beta)

import random

# 生成一个Beta分布的随机浮点数
print(random.betavariate(3, 3))

13. random.expovariate(lambd)

import random

# 生成一个指数分布的随机浮点数
print(random.expovariate(0.5))

14. random.normalvariate(mu, sigma)

import random

# 生成一个正态(高斯)分布的随机浮点数
print(random.normalvariate(0, 1))

二、Python hashlib模块

hashlib 是 Python 的标准库之一,用于提供常见的哈希算法,如 MD5、SHA1、SHA224、SHA256、SHA384、SHA512 以及 SHA3(Keccak)等。以下是一些 hashlib 模块中常用的函数和类,以及它们的案例代码:

hashlib 模块中的常用方法和类

  1. hashlib.md5()
  2. hashlib.sha1()
  3. hashlib.sha224()
  4. hashlib.sha256()
  5. hashlib.sha384()
  6. hashlib.sha512()
  7. hashlib.blake2b()
  8. hashlib.blake2s()
  9. hashlib.sha3_224()
  10. hashlib.sha3_256()
  11. hashlib.sha3_384()
  12. hashlib.sha3_512()
  13. hashlib.new(name, data=None)

案例代码

MD5 哈希

import hashlib

# 创建一个 MD5 哈希对象
md5_hash = hashlib.md5()

# 提供要哈希的数据,需要先转换为字节
data = "Hello, world!".encode('utf-8')

# 更新哈希对象
md5_hash.update(data)

# 获取16进制哈希值
hex_dig = md5_hash.hexdigest()

print(hex_dig)  # 输出 MD5 哈希值的16进制表示

SHA256 哈希

import hashlib

# 创建一个 SHA256 哈希对象
sha256_hash = hashlib.sha256()

# 提供要哈希的数据(同样需要是字节)
data = "This is a SHA256 hash example.".encode('utf-8')

# 更新哈希对象
sha256_hash.update(data)

# 获取16进制哈希值
hex_dig = sha256_hash.hexdigest()

print(hex_dig)  # 输出 SHA256 哈希值的16进制表示

使用 hashlib.new() 创建哈希对象

hashlib.new() 是一个更通用的方法,可以用来创建任何类型的哈希对象。

import hashlib

# 使用 new 方法创建一个 SHA1 哈希对象
sha1_hash = hashlib.new('sha1')

# 提供要哈希的数据(字节形式)
data = b"Hashing with hashlib.new()"

# 更新哈希对象
sha1_hash.update(data)

# 获取16进制哈希值
hex_dig = sha1_hash.hexdigest()

print(hex_dig)  # 输出 SHA1 哈希值的16进制表示

哈希文件内容

如果你想哈希一个文件的内容,你可以这样做:

import hashlib

def hash_file(file_path, hash_type='sha256'):
    """哈希文件内容"""
    sha_signature = hashlib.new(hash_type)

    with open(file_path, "rb") as f:
        while True:
            data = f.read(4096)
            if not data:
                break
            sha_signature.update(data)

    return sha_signature.hexdigest()

# 使用函数哈希文件
file_path = 'path/to/your/file.txt'
print(hash_file(file_path))  # 输出文件的哈希值

在以上示例中,hash_file 函数接受一个文件路径和一个哈希类型(默认为 SHA256),然后读取文件内容并计算其哈希值。这个函数在读取大文件时特别有用,因为它不会一次性将整个文件加载到内存中。

三、相关链接

  1. Python下载安装中心
  2. Python官网
  3. Python软件下载
  4. 「Python系列」Python简介及案例
  5. 「Python系列」Python基础语法/数据类型
  6. 「Python系列」Python解释器
  7. 「Python系列」Python运算符
  8. 「Python系列」Python数据结构
  9. 「Python系列」Python元组
  10. 「Python系列」Python集合
  11. 「Python系列」Python列表
相关文章
|
3月前
|
开发者 Python
如何在Python中管理模块和包的依赖关系?
在实际开发中,通常会结合多种方法来管理模块和包的依赖关系,以确保项目的顺利进行和可维护性。同时,要及时更新和解决依赖冲突等问题,以保证代码的稳定性和可靠性
158 62
|
2月前
|
Python
Python Internet 模块
Python Internet 模块。
133 74
|
3月前
|
算法 数据安全/隐私保护 开发者
马特赛特旋转算法:Python的随机模块背后的力量
马特赛特旋转算法是Python `random`模块的核心,由松本真和西村拓士于1997年提出。它基于线性反馈移位寄存器,具有超长周期和高维均匀性,适用于模拟、密码学等领域。Python中通过设置种子值初始化状态数组,经状态更新和输出提取生成随机数,代码简单高效。
141 63
|
3月前
|
数据可视化 Python
如何在Python中解决模块和包的依赖冲突?
解决模块和包的依赖冲突需要综合运用多种方法,并且需要团队成员的共同努力和协作。通过合理的管理和解决冲突,可以提高项目的稳定性和可扩展性
|
3月前
|
Python
Python的模块和包
总之,模块和包是 Python 编程中非常重要的概念,掌握它们可以帮助我们更好地组织和管理代码,提高开发效率和代码质量
133 61
|
3月前
|
测试技术 Python
手动解决Python模块和包依赖冲突的具体步骤是什么?
需要注意的是,手动解决依赖冲突可能需要一定的时间和经验,并且需要谨慎操作,避免引入新的问题。在实际操作中,还可以结合使用其他方法,如虚拟环境等,来更好地管理和解决依赖冲突😉。
|
3月前
|
持续交付 Python
如何在Python中自动解决模块和包的依赖冲突?
完全自动解决所有依赖冲突可能并不总是可行,特别是在复杂的项目中。有时候仍然需要人工干预和判断。自动解决的方法主要是提供辅助和便捷,但不能完全替代人工的分析和决策😉。
|
1月前
|
Python
[oeasy]python057_如何删除print函数_dunder_builtins_系统内建模块
本文介绍了如何删除Python中的`print`函数,并探讨了系统内建模块`__builtins__`的作用。主要内容包括: 1. **回忆上次内容**:上次提到使用下划线避免命名冲突。 2. **双下划线变量**:解释了双下划线(如`__name__`、`__doc__`、`__builtins__`)是系统定义的标识符,具有特殊含义。
32 3
|
3月前
|
JSON Linux 数据格式
Python模块:从入门到精通,只需一篇文章!
Python中的模块是将相关代码组织在一起的单元,便于重用和维护。模块可以是Python文件或C/C++扩展,Python标准库中包含大量模块,如os、sys、time等,用于执行各种任务。定义模块只需创建.py文件并编写代码,导入模块使用import语句。此外,Python还支持自定义模块和包,以及虚拟环境来管理项目依赖。
Python模块:从入门到精通,只需一篇文章!
|
3月前
|
Python
在Python中,可以使用内置的`re`模块来处理正则表达式
在Python中,可以使用内置的`re`模块来处理正则表达式
90 5

推荐镜像

更多