「Python系列」Python random模块、hashlib模块.md
### Python `random` 模块详解 `random` 模块是 Python 的标准库之一,提供了丰富的函数来生成各种类型的随机数。这对于模拟、游戏开发、统计分析等场景非常有用。 #### 1. `random.random()` 这个函数用于生成一个位于 `[0.0, 1.0)` 范围内的随机浮点数。这里的开区间意味着可以取到 0.0 但永远不会等于 1.0。例如: ```python import random print(random.random()) # 输出例如 0.572348984589 ``` #### 2. `random.uniform(a, b)` 该函数用于生成一个位于 `[a, b)` 范围内的随机浮点数。与 `random.random()` 不同的是,它可以生成指定区间的任意浮点数。例如: ```python import random print(random.uniform(1.5, 4.2)) # 输出例如 2.3456789012 ``` #### 3. `random.randint(a, b)` 此函数用于生成一个位于 `[a, b]` 区间内的随机整数,包括 `a` 和 `b`。例如: ```python import random print(random.randint(1, 10)) # 输出例如 5 ``` #### 4. `random.randrange(start, stop[, step])` 该函数用于生成一个从 `start` 到 `stop`(不包括 `stop`)范围内的随机整数,可选参数 `step` 表示递增的间隔,默认为 1。例如: ```python import random print(random.randrange(1, 10, 2)) # 输出例如 1, 3, 5, 7, 9 ``` #### 5. `random.choice(seq)` 此函数用于从非空序列 `seq` 中随机选择一个元素。序列可以是列表、元组或字符串等。例如: ```python import random my_list = ['apple', 'banana', 'cherry'] print(random.choice(my_list)) # 输出例如 'banana' ``` #### 6. `random.shuffle(seq)` 该函数用于将序列 `seq` 中的元素随机排序,并且会直接修改原序列。例如: ```python 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` 个不重复的元素,返回一个新的列表。例如: ```python import random my_list = [1, 2, 3, 4, 5] print(random.sample(my_list, 3)) # 输出例如 [3, 1, 4] ``` #### 8. `random.bytes(n)` 该函数用于生成 `n` 个随机字节。生成的字节通常用于加密或生成密钥等。例如: ```python 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`,那么之后的随机数序列将会是相同的。例如: ```python import random random.seed(10) print(random.random()) # 每次使用相同的种子都会得到相同的随机数 ``` #### 10. `random.getrandbits(k)` 该函数用于生成一个 `k` 位长的随机整数。通常用于需要生成特定长度的随机数的场景。例如: ```python import random print(random.getrandbits(16)) # 输出例如 61703 ``` #### 11. `random.triangular(low, high, mode)` 此函数用于生成一个三角分布的随机浮点数,其分布的低值、高值和模式值分别为 `low`、`high` 和 `mode`。例如: ```python import random print(random.triangular(1, 10, 5)) # 生成一个三角分布的随机浮点数 ``` #### 12. `random.betavariate(alpha, beta)` 该函数用于生成一个 Beta 分布的随机浮点数,其中 `alpha` 和 `beta` 是形状参数。Beta 分布通常用于概率论和统计学中。例如: ```python import random print(random.betavariate(3, 3)) # 生成一个 Beta 分布的随机浮点数 ``` #### 13. `random.expovariate(lambd)` 此函数用于生成一个指数分布的随机浮点数,其中 `lambd` 是分布的参数。指数分布常用于建模事件发生的概率随时间的变化。例如: ```python import random print(random.expovariate(0.5)) # 生成一个指数分布的随机浮点数 ``` #### 14. `random.normalvariate(mu, sigma)` 该函数用于生成一个正态(高斯)分布的随机浮点数,其中 `mu` 是均值,`sigma` 是标准差。正态分布是最常用的连续概率分布之一。例如: ```python import random print(random.normalvariate(0, 1)) # 生成一个正态(高斯)分布的随机浮点数 ``` ### Python `hashlib` 模块详解 `hashlib` 是 Python 的标准库之一,提供了许多常用的哈希算法,如 MD5、SHA1、SHA224、SHA256、SHA384、SHA512 以及 SHA3(Keccak)等。这些算法主要用于数据完整性验证、密码存储、数字签名等应用场景。 #### 哈希算法简介 哈希算法是一种将任意长度的数据转换为固定长度的输出的过程。这种转换通常是不可逆的,即很难从哈希结果反推出原始输入数据。每个哈希算法都有不同的特点,比如安全性和速度。 #### hashlib 提供的主要哈希算法 - **MD5**:一种广泛使用的哈希算法,但由于存在安全性问题,目前主要用于非关键应用。 - **SHA1**:比 MD5 更安全,但已被发现存在碰撞攻击的问题。 - **SHA224/SHA256/SHA384/SHA512**:SHA-2 家族的一部分,更加安全,被广泛应用于密码学和数据安全领域。 - **SHA3**(Keccak):最新的哈希算法家族,具有更高的安全性,用于替代 SHA-2 家族。 #### 基本用法 下面是一个简单的例子,演示如何使用 `hashlib` 来计算字符串的 MD5 哈希值: ```python import hashlib # 计算字符串的 MD5 哈希值 s = "Hello, World!" m = hashlib.md5() m.update(s.encode('utf-8')) print(m.hexdigest()) # 输出哈希值 ``` 通过上述方法,我们可以轻松地利用 Python 的 `hashlib` 库来实现对数据的哈希处理,从而增强应用程序的安全性。 总结来说,`random` 模块提供了多种生成随机数的方法,适用于不同的场景;而 `hashlib` 模块则提供了多种哈希算法,可以帮助开发者实现数据的安全处理。这两个模块都是 Python 开发中非常重要的工具。
































- 粉丝: 4w+
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 基于PLC的电梯控制系统研究与方案设计书.doc
- 《网络安全》复习题.doc
- 互联网的企业信息交易平台的研究与研究与设计开发.doc
- 银行计算机网络风险的分析与对策.docx
- VB酒店服务管理完整.doc
- 科学大数据的发展态势及建议.docx
- 云计算时代网络安全现状与防御措施探讨.docx
- 在地铁5G网络建设过程中的规划需求分析.docx
- 区块链分布式记账应用会计记账领域探究.docx
- 《数据库课程设计方案》任务.doc
- 网络餐饮服务实施方案.doc
- 软件测试方案.docx
- 单片机技术课程研究设计报告(篮球计时计分器).doc
- 智慧城市建设PPP模式实践研究.docx
- 大数据技术在特高压变电站运维中的运用.docx
- 软件工程期末复习题(含标准答案).doc


