Python的random库中.randint 和.sample 及.choice的区别

一、 说明

   random.randintrandom.samplerandom.choice 是 Python 标准库 random 模块中的函数,它们都用于生成随机数或随机选择元素,但有不同的功能和用法。

二、random.randint

  • 功能:从指定的范围内生成一个随机整数。
  • 用法random.randint(a, b) 返回一个位于 [a, b] 范围内的随机整数,其中 ab 都包含在内。
  • 示例
import random

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

        在这个例子中,random.randint(1, 10) 将生成一个介于 1 和 10 之间的随机整数,包括 1 和 10。

三、random.sample

  • 功能:从指定的序列中随机抽取指定数量的唯一元素,返回一个列表。
  • 用法random.sample(population, k)population 序列中随机抽取 k 个唯一元素。如果 k 大于 population 的长度,则会抛出 ValueError 异常。
  • 示例
import random

# 从列表中随机抽取3个不同的元素
population = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
random_sample = random.sample(population, 3)
print(random_sample)

        在这个例子中,random.sample(population, 3) 将从 population 列表中随机抽取 3 个不同的元素,结果是一个包含 3 个元素的新列表。

四、random.choice

  • 功能:从指定的非空序列中随机选择一个元素。
  • 用法random.choice(seq)
    • seq 是一个非空序列。
    • 返回序列中的一个随机元素。
  • 示例

    从列表中选择一个随机元素

import random

items = [1, 2, 3, 4, 5]
random_item = random.choice(items)
print(random_item)  # 可能输出例如 4

        这个代码会从 items 列表中随机选择一个元素并打印出来。例如,它可能会打印 3,但每次运行的结果可能不同。

        从字符串中选择一个随机字符

import random

# 定义一个字符串
letters = 'abcdef'

# 从字符串中随机选择一个字符
random_letter = random.choice(letters)
print(random_letter)

        这个代码会从 letters 字符串中随机选择一个字符并打印出来。例如,它可能会打印 c,但每次运行的结果可能不同。

  • 注意事项

    • random.choice 只能用于非空序列。如果序列为空,则会抛出 IndexError 异常。
    • random.choice 返回的是序列中的一个随机元素,而不是一个子序列或多个元素。
  • 举例说明

        用于选择随机操作

        假设有一个程序需要随机选择一种操作:

import random

# 定义一组操作
operations = ['add', 'subtract', 'multiply', 'divide']

# 随机选择一种操作
operation = random.choice(operations)
print(operation)

        这个代码会从 operations 列表中随机选择一种操作并打印出来。例如,它可能会打印 multiply

  • 与其他随机函数的比较

    • random.choice(seq) 从序列中随机选择一个元素。
    • random.randint(a, b) 生成一个位于 [a, b] 范围内的随机整数,包括 ab
    • random.sample(population, k)population 序列中随机抽取 k 个唯一元素,返回一个包含这 k 个元素的新列表。

五、总结三者的区别

  1. 返回值类型

    • random.randint(a, b) 返回一个随机整数。
    • random.sample(population, k) 返回一个包含 k 个唯一元素的列表。
    • random.choice(seq) 返回序列中的一个随机元素。
  2. 重复性

    • random.randint 生成的数值可以重复(每次调用都独立)。
    • random.sample 生成的样本元素是不重复的(抽取的元素在返回列表中唯一)。
    • random.choice 每次调用可能返回相同的元素,但单次调用返回的元素不会重复。
  3. 适用范围

    • random.randint 用于生成指定范围内的随机整数。
    • random.sample 用于从一个序列中随机抽取多个唯一元素。
    • random.choice 用于从一个序列中随机选择一个元素。

六、举个更详细的例子

        假设我们有一个学生名单,我们想要随机抽取一个学生和三个学生:

  • 使用 random.randint 抽取一个学生
import random

students = ['测试木头人1号', '测试木头人2号', '测试木头人3号', '测试木头人4号']
index = random.randint(0, len(students) - 1)
selected_student = students[index]
print(selected_student)
  • 使用 random.sample 抽取三个学生
import random

students = ['测试木头人1号', '测试木头人2号', '测试木头人3号', '测试木头人4号']
selected_students = random.sample(students, 3)
print(selected_students)

        在第一个例子中,我们使用 random.randint 生成一个随机索引来选择一个学生。在第二个例子中,我们使用 random.sample 从名单中随机抽取三个学生。

  • 使用 random.choice
import random

# 定义一个列表
items = [1, 2, 3, 4, 5]

# 从列表中随机选择一个元素
random_item = random.choice(items)
print(random_item)  # 输出范围: 例如 4,单次选择一个元素

七、适用场景

  • random.randint:适用于需要生成一个随机整数的场景,如骰子游戏、随机时间生成等。
  • random.sample:适用于需要从一个集合中抽取多个不重复元素的场景,如抽奖、随机分组等。
  • random.choice:适用于需要从一个集合中选择一个随机元素的场景,如随机抽取一个人、选择一个随机动作等。

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
random.randintrandom模块中的一个函数,用于返回一个指定范围内的随机整数。该函数的语法为random.randint(a, b),其中a为范围的下限,b为范围的上限,返回的随机整数满足a <= N <= b。 random.samplerandom模块中的另一个函数,用于从指定的列表或集合中随机选择指定数量的元素,返回一个新的列表。该函数的语法为random.sample(sequence, k),其中sequence为要选择元素的序列,k为要选择的元素数量。返回的列表包含了随机选择的k个元素。 所以,random.randint用于生成随机整数,而random.sample用于从序列中随机选择元素。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Python random.randint方法代码示例](https://blog.csdn.net/weixin_39526741/article/details/110164119)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [np.random.randint、np.random.choicerandom.sample三种随机函数的用法案例](https://blog.csdn.net/zsc201825/article/details/80918450)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [Python 随机数函数 random 七种常用方法解说](https://download.csdn.net/download/weixin_38543120/13749340)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

测试木头人

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

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

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

打赏作者

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

抵扣说明:

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

余额充值