Python中的Random库

本文介绍了Python内置的random库,用于生成各种分布的伪随机数,包括seed()、random()、randint()等函数。通过实例展示了如何使用random库创建随机密码,强调了随机种子在确保序列重复性中的作用。同时,文章还提供了随机密码生成的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

文章目录

random库概述

random库解析


random库

random库概述

        随机数在计算机应用中十分常见,Python内置的random库主要用于产生各种分布的伪随机数序列。random库采用梅森旋转算法(Mersenne twister)生成伪随机数序列,可用于除随机性要求更高的加解密算法外的大多数工程应用。

使用random库主要目的是生成随机数,因此,读者只需要查阅该库的随机数生成函数,找到符合使用场景的函数使用即可。这个库提供了不同类型的随机数函数,所有函数都是基于最基本的random.random()函数扩展而来。


random库解析

函数

描述

seed(a=None)

初始化随机数种子,默认值为当前系统时间

random()

生成一个[0.0, 1.0)之间的随机小数,不包括1.0

randint(a, b)

生成一个[a,b]之间的整数,包括起止点

getrandbits(k)

生成一个k比特长度的随机整数

randrange(start, stop[, step])

生成一个[start, stop)之间以step为步数的随机整数

uniform(a, b)

生成一个[a, b]之间的随机小数

choice(seq)

从序列类型(例如:列表)中随机返回一个元素

shuffle(seq)

将序列类型中元素随机排列,返回打乱后的序列

sample(pop, k)

从pop类型中随机选取k个元素,以列表类型返回

对random库的引用方法与math库一样,采用下面两种方式实现:

import random from random import *

实例

>>>from random import *

>>>random()        #生成一个[0.0, 1.0)之间的随机小数

0.2922089114412476

>>>uniform(1,10)        #生成一个[a, b]之间的随机小数

1.5913082783598524

>>>uniform(1,20)        #生成一个[a, b]之间的随机小数

7

>>>randrange (0,100,4) #从0开始到100以4递增的元素中随机返回

96

>>>choice(range(100))        #从序列类型(例如:列表)中随机返回一个元素

97

>>>ls = list(range(10))

>>>print(ls)

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

>>>shuffle(ls)        #将序列类型中元素随机排列,返回打乱后的序列

>>>print(ls)

[5,8,4,7,6,9,3,0,2,10, 1, 2, 3, 4, 5, 6, 7,8, 9]

随机密码生成

描述

补充编程模板中代码,完成如下功能:‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬

以整数17为随机数种子,获取用户输入整数N为长度,产生3个长度为N位的密码,密码的每位是一个数字。每个密码单独一行输出。‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬

产生密码采用random.randint()函数。‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬

输入输出示例

输入输出
示例 13

634

524

926

代码
import random


def genpwd(length):
    pwd = random.randint(10**(length-1), 10**length)
    return pwd


length = eval(input())
random.seed(17)
for i in range(3):
    print(genpwd(length))

 生成随机数之前可以通过seed()函数指定随机数种子,随机种子一般是一个整数,只要种子相同,每次生成的随机数序列也相同。这种情况便于测试和同步数据

>>>seed(125) # 随机种子赋值125                                    

>>>"{}.{}.{}".format(randint(1,10),randint(1,10),randint(1,10))

'4.4.10'

>>>"{}.{}.{}".format(randint(1,10),randint(1,10),randint(1,10))

'5.10.3'

>>>seed(125) # 再次给随机种子赋值125                               

>>>"{}.{}.{}".format(randint(1,10),randint(1,10),randint(1,10))

'4.4.10'

 由上述语句可以看出,在设定相同的种子后,每次调用随机函数生成的随机数是相同的。这是随机数种子的作用,也是伪随机序列的应用之一。


### Python `random` 的功能与使用 #### 基本介绍 Python 的 `random` 是一个用于生成伪随机数的模块,其核心算法基于梅森旋转算法 (Mersenne Twister)[^1]。这种算法能够高效地生成高质量的伪随机数序列,适用于绝大多数工程需求。 尽管计算机无法真正生成完全不可预测的随机数,但通过复杂的数学模型可以模拟出满足实际需求的伪随机数[^2]。以下是 `random` 的一些主要功能及其具体用法: --- #### 主要功能及示例代码 1. **生成浮点型随机数** 函数 `random.random()` 可以返回 `[0, 1)` 范围内的一个随机浮点数。 ```python import random result = random.random() print(result) # 输出类似于 0.789456... ``` 2. **生成指定范围内的整数** 使用 `random.randint(a, b)` 可以生成区间 `[a, b]` 中的一个随机整数。 ```python number = random.randint(1, 10) print(number) # 输出 1 到 10 之间的某个整数 ``` 3. **从列表中随机选取元素** 函数 `random.choice(sequence)` 返回给定序列中的任意一个元素。 ```python items = ['apple', 'banana', 'cherry'] selected_item = random.choice(items) print(selected_item) # 输出可能是 apple 或 banana 或 cherry ``` 4. **打乱序列顺序** 方法 `random.shuffle(list)` 将原位修改并随机排列列表中的元素。 ```python my_list = [1, 2, 3, 4, 5] random.shuffle(my_list) print(my_list) # 输出可能为 [3, 1, 5, 2, 4] ``` 5. **生成均匀分布的随机数** 如果需要生成特定区间的随机浮点数,可使用 `random.uniform(a, b)`。 ```python value = random.uniform(-1.0, 1.0) print(value) # 输出 -1.0 和 1.0 之间的一个随机浮点数 ``` 6. **设置种子值** 若要使程序每次运行的结果一致,可以通过 `random.seed(seed_value)` 设置固定的种子值。 ```python random.seed(42) reproducible_number = random.random() print(reproducible_number) # 每次执行都会得到相同的结果 ``` --- #### 高级功能 除了上述基本操作外,`random` 还支持更高级别的随机数生成方式,例如正态分布、指数分布等统计学常用的概率分布函数。 - **正态分布随机数** 使用 `random.gauss(mu, sigma)` 来获取均值为 `mu`、标准差为 `sigma` 的高斯分布随机数。 ```python normal_random = random.gauss(0, 1) print(normal_random) # 输出服从 N(0, 1) 正态分布的数值 ``` - **样本抽取** 若需无放回地从集合中抽取多个项目,则可用 `random.sample(population, k)`。 ```python sample_result = random.sample(range(1, 10), 3) print(sample_result) # 输出如 [2, 7, 4] ``` --- #### 注意事项 由于 `random` 生成的是伪随机数,在安全性要求较高的场景下(如密码学加密),应考虑使用专门的安全,例如 `secrets` 模块。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

W_chuanqi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值