详解Python random.choices(从序列中获取指定数量随机元素)函数的使用方法

Python中的random模块可以用来生成伪随机数。在这个模块中,choices()函数可以从给定的序列中随机选取元素。这个函数可以用来模拟实际场景,比如抽奖,随机分配任务等等。

choices()函数的语法如下:

random.choices(population, weights=None, *, cum_weights=None, k=1)

其中:

  • population:必须是一个序列,可以是列表,元组,字符串等等。表示要从中选取元素的序列。
  • weights:可选参数。必须是一个数字序列,长度必须和population相同。表示每个元素被选中的概率,可以是小数,但必须大于等于0。
  • cum_weights:可选参数。必须是一个数字序列,长度必须和population相同。表示累计权重,即前n个元素被选中的概率,如果指定了cum_weights,那么不能同时指定weights。
  • k:可选参数。表示要选取的元素个数,默认值是1。

当参数中只指定population时,函数会从中等概率地选取1个元素,并返回一个列表。下面是一个简单的例子:

import random

# 从1-10中随机选取一个数
num = random.choices(range(1, 11))
print(num)

运行结果可能是:

[4]

当然,你也可以指定元素的权重来控制被选中的概率。例如:

import random

# 从1-10中随机选取一个数,2被选中的概率是1/3,其他数字被选中的概率是1/7
num = random.choices(range(1, 11), weights=[1, 3, 1, 1, 1, 1, 1, 1, 1, 1])
print(num)

运行结果可能是:

[2]

除了从序列中选取元素外,choices()函数还可以用来做随机采样和随机洗牌等操作。接下来给出两个实例。

实例1:使用choices()函数实现随机采样

假设我们有一个大的数据集,我们想从中随机选取一部分数据进行训练,一部分数据进行测试。这时可以使用choices()函数来实现随机采样。下面是一个例子,首先生成100个数据,然后随机选取10个数据作为测试集。

import random

data = list(range(0, 100))
test_set = random.choices(data, k=10)
train_set = [x for x in data if x not in test_set]

print("测试集:", test_set)
print("训练集:", train_set)

运行结果可能是:

测试集: [78, 91, 70, 12, 56, 11, 16, 10, 49, 61]
训练集: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 13, 14, 15, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 50, 51, 52, 53, 54, 55, 57, 58, 59, 60, 62, 63, 64, 65, 66, 67, 68, 69, 71, 72, 73, 74, 75, 76, 77, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 92, 93, 94, 95, 96, 97, 98, 99]

实例2:使用choices()函数实现随机洗牌

假设我们有一副扑克牌,我们想把它洗牌后重新排列。这时可以使用choices()函数来实现随机洗牌。下面是一个例子,首先生成一副扑克牌,然后随机洗牌。

import random

# 生成一副扑克牌
suits = ['♠', '♥', '♦', '♣']
ranks = ['2', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K', 'A']
deck = [rank + suit for suit in suits for rank in ranks]

# 洗牌
random.shuffle(deck)

print(deck)

运行结果可能是:

['7♦', 'K♦', 'A♣', 'A♦', 'J♣', '4♦', '9♥', 'K♥', '2♥', '2♠', 'K♣', '4♠', '8♦', '5♣', 'J♠', '5♠', 'Q♦', 'Q♠', '6♣', '10♠', '7♠', '9♣', 'A♥', '6♥', '6♠', '8♠', 'J♦', 'Q♣', '9♠', '3♣', '7♥', 'K♠', '2♣', '3♠', '10♥', '3♥', '4♥', '5♥', '8♥', '10♣']

通过以上两个例子,我们可以看到choices()函数的用法非常灵活,可以用来解决很多实际问题。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解Python random.choices(从序列中获取指定数量随机元素)函数的使用方法 - Python技术站

(1)
上一篇 2023年3月21日 下午7:55
下一篇 2023年3月21日

相关文章

  • 详解Python random.vonmisesvariate(获取von Mises 分布的随机数)函数的使用方法

    Python中的random.vonmisesvariate函数用于生成符合von Mises分布的随机数。von Mises分布是描述圆周数据集的分布,常用于处理角度、方向等数据。 函数语法如下: random.vonmisesvariate(mu, kappa) 其中,mu表示分布的中心,kappa表示分布的方向程度,越大分布越趋向于单峰分布。 下面通过…

    2023年3月21日
    00
  • 详解Python random.seed(初始化随机数生成器)函数的使用方法

    Python的random模块是用来生成随机数的,其中random.seed函数是设定随机数生成器的种子。具体来说,如果随机数生成器的种子相同,那么每次生成的随机数序列都将是一样的,这就确保了程序的可复现性。 那么该函数如何使用呢?在Python中,random模块是内置模块,所以我们不需要安装任何库。在使用之前,需要先引入random模块: import …

    Random模块 2023年3月21日
    00
  • 详解Python random.gauss(获取高斯分布的随机数)函数的使用方法

    Python random.gauss 函数是用于生成高斯分布随机数的函数。高斯分布(也叫正态分布)是一种连续分布,其分布形状呈钟形曲线,具有对称性,其数学模型是由均值和标准差两个参数决定的。 该函数可以用于模拟实际情况下出现的随机数,比如模拟天气、股票价格等。 使用方法 首先要导入random模块: import random 然后,调用 random.g…

    Random模块 2023年3月21日
    00
  • 详解Python random.betavariate(获取beta 分布的随机数)函数的使用方法

    Python random.betavariate 函数是用于生成随机数的函数,可以生成服从 Beta 分布的随机数。Beta 分布是一种连续概率分布,其形状可变化,典型形态为“U”型或“J”型,可以用于描述在比例和概率分布中的一些问题。 函数定义 random.betavariate(alpha, beta) 参数说明 alpha:Beta 分布的第一个参…

    2023年3月21日
    00
  • 详解Python random.getrandbits(生成随机整数)函数的使用方法

    Python的random.getrandbits函数用于获取指定位数的随机位二进制数。 该函数有一个参数,表示要获取的二进制数的位数。 例如,若要获取一个16位(即4个字节)的随机二进制数,使用如下代码: import random rand_num = random.getrandbits(16) print(bin(rand_num)) 输出: 0b1…

    Random模块 2023年3月21日
    00
  • 详解Python random.triangular(获取三角形分布的随机数)函数的使用方法

    Python 的 random.triangular 函数可用于生成一个指定区间内的随机浮点数,该函数的具体作用是在指定的区间范围内随机生成一个符合三角分布的浮点数。三角分布是一种概率分布,它以一个值为中心点,向两侧呈现一条坡度较缓的曲线。这种分布通常用于表示具有明确上限和下限的随机变量。 下面我们看一下 random.triangular 函数的使用方法和…

    2023年3月21日
    00
  • 详解Python random.shuffle(随机打乱元素)函数的使用方法

    Python中的random模块提供了许多用于生成随机数的函数,其中一个非常有用的函数就是shuffle。 本文将详细介绍shuffle函数的作用与使用方法,并提供两个实例说明其用法。 作用 shuffle函数可以随机打乱一个序列,例如列表或字符串。这个函数能够对序列进行原地修改,也就是说,它将直接影响原始序列,而不是返回一个新的序列。这是与random.s…

    Random模块 2023年3月21日
    00
  • 详解Python random.sample(从序列中获取指定数量不重复的随机元素)函数的使用方法

    Python 中的 random.sample 函数是一个用于从给定的序列中随机选取指定长度的不重复元素的函数。它能够以一定概率随机抽取序列中的元素,常用于从大数据集中筛选出样本集合。 函数原型如下: random.sample(sequence, k) 其中,sequence 为被抽样的序列,可以是列表、元组或字符串等可迭代对象;k 为抽取的样本数量。 下…

    Random模块 2023年3月21日
    00
合作推广
合作推广
分享本页
返回顶部