Python基础之random库

本文介绍了Python的random模块,包括设置随机种子、生成随机数、随机选择元素等常用函数的用法。通过实例展示了如何生成随机整数、随机小数、随机选择列表元素以及打乱列表顺序。同时,给出了生成随机密码的案例,强调了random库在编程中的实用性。

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

目录

1、random库介绍

2、常用函数

3、不常用函数

4、案例


1、random库介绍

random模块实现了各种分布的伪随机数生成器,为什么称为伪随机数:即使人类使用算法等方式,以一个基准(也被叫做种子,最常用的就是时间戳)来构造一系列数字,这些数字的特控符合人们所理解的随机数。但因为是通过算法得到的,所以一旦算法和种子都确定,那么产生的随机数序列也是确定的,所以叫伪随机数

2、常用函数

random.seed(a)

设置初始化随机种子,可输出相同随机数序列;a取整数或浮点数,不设置时默认以系统时间为种子。

import random


print("没有设置种子时")
for i in range(5):
    ret = random.randint(1, 10)
    print(ret, end=" ")
print()

print("设置种子时")
random.seed(1)
for i in range(5):
    ret = random.randint(1, 10)
    print(ret, end=" ")

没有显示设定种子时,每次输出的随机数都是不一样的;显示设置种子时,每次输出的随机数都是一样的。

random.random() # 用于生成一个0.0到1.0的随机数

print(random.random())

random.uniform(a, b) # 生成一个[a, b]之间的随机小数;a,b取整数或浮点数

print(random.uniform(10, 20))

random.randint(a, b)  # 生成一个[a, b]之间随机整数

print(random.randint(10, 20))

random.randrange(start, stop, [step])

# 生成一个[start, stop]之间以step步数的随机整数:start,stop,step取整数,step不设置时默认值为1

print(random.randrange(1, 100))  # 随机生成1-100之间的整数

print(random.randrange(1, 100, 2))  # 随机生成1-100之间奇数

print(random.randrange(2, 100, 2))  # 随机生成1-100之间偶数

random.getrandbits(k)  # 生成一个占内存k位以内的随机整数;k取长度的整数值

print(random.getrandbits(10))  # 生成一个内存占k位以内的随机数;k取长度的整数值

random.choice(seq)  # 从序列类型seq中随机返回一个元素;seq取序列类型:如字符串、列表、元组

print(random.choice([1, '10', 3, 5, 7, 1001]))

random.shuffle(seq)

将序列类型中元素随机排序,返回打乱后序列,seq被改变(改变原序列),shuffle为洗牌之意;seq取序列类型:如字符串,列表,元组


list = ['a', 'b', 'c', 'd', 'e', 'f']
random.shuffle(list)
print(list)

random.sample(pop, k)

从pop中选取k个元素,以列表类型返回(不改变原列表);pop取序列类型,k取整数:代表选取个数

print(random.sample(list, 3))

3、不常用函数

random.getstate()  # 等等,遇到再说吧

4、案例

import random
import string


def get_random_string(length):
    # 随机生成字母和数字的位数
    num_count = random.randint(1, length-1)
    letter_count = length-num_count

    # 随机抽样生成数字序列
    num_list = [random.choice(string.digits) for _ in range(num_count)]

    # 随机抽样生成字母序列
    letter_list = [random.choice(string.ascii_letters) for _ in range(letter_count)]

    # 合并字母和数字
    all_list = num_list + letter_list

    # 乱序
    random.shuffle(all_list)

    result = "".join(i for i in all_list)
    return result


# 生成10位的密码
password1 = get_random_string(10)
print(password1)

### Python `random` 的使用方法与示例 #### 导入模块 为了使用 `random` 中的功能,首先需要导入该。可以通过以下方式完成: ```python import random ``` #### 常见函数及其用途 1. **生成 [0, 1) 范围内的浮点数** 函数 `random.random()` 可用于生成一个介于 0 和 1 的随机浮点数[^2]。 ```python result = random.random() print("随机数:", result) ``` 2. **生成指定范围内的浮点数** 函数 `random.uniform(a, b)` 可以生成一个在 `[a, b]` 或 `(b, a]` 范围内的随机浮点数[^2]。 ```python lower_bound = 10 upper_bound = 20 uniform_random = random.uniform(lower_bound, upper_bound) print(f"{lower_bound} 到 {upper_bound} 的随机数: {uniform_random}") ``` 3. **生成指定范围内的整数** 函数 `random.randint(a, b)` 返回一个位于区间 `[a, b]` 的随机整数[^1]。 ```python start = 5 end = 15 randint_result = random.randint(start, end) print(f"{start} 到 {end} 的随机整数: {randint_result}") ``` 4. **从序列中随机选择一项** 函数 `random.choice(sequence)` 会从非空序列中随机选取一个元素[^1]。 ```python options = ['苹果', '香蕉', '橙子'] chosen_item = random.choice(options) print(f"随机选择的水果: {chosen_item}") ``` 5. **打乱列表顺序** 函数 `random.shuffle(x)` 将原地修改可变序列对象 `x` 并将其元素随机排列[^1]。 ```python numbers = [1, 2, 3, 4, 5] random.shuffle(numbers) print(f"打乱后的列表: {numbers}") ``` 6. **生成样本集合** 函数 `random.sample(population, k)` 从总体 `population` 中无放回地抽取 `k` 个独立样本。 ```python population = list(range(1, 11)) sample_size = 4 sampled_items = random.sample(population, sample_size) print(f"从 {population} 抽取的 {sample_size} 个样本: {sampled_items}") ``` 7. **设置随机种子** 如果希望每次运行程序时都能得到相同的随机结果,则可以使用 `random.seed(value)` 设置固定的种子值[^3]。 ```python seed_value = 42 random.seed(seed_value) reproducible_random = random.random() print(f"固定种子下的随机数 ({seed_value}): {reproducible_random}") ``` --- ### 总结 以上介绍了 `random` 的一些常用函数以及它们的具体应用实例。通过这些工具,开发者能够轻松实现各种涉及随机性的需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值