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

yizhihongxing

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技术站

(0)
上一篇 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.randrange(获取一个随机数)函数的使用方法

    Python random.randrange()函数用于生成一个指定范围内的随机整数,可以用来模拟概率实验、游戏等需要随机数的场景。本文将介绍该函数的作用、使用方法以及两个实例。 random.randrange()函数的语法和返回值 random.randrange(start, stop[, step])函数的语法如下: random.randrang…

    Random模块 2023年3月21日
    00
  • 详解Python random.random(生成随机浮点数)函数的使用方法

    Python random模块中的random()函数返回随机生成的[0, 1)之间的实数。它主要用于生成随机数,有很多应用场景,例如模拟、数据加密、游戏等。下面是一些使用方法和示例: 使用方法 在Python中,要使用random()函数需要先导入random模块: import random 然后调用random()函数生成随机数: random.ran…

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

    Python的random.paretovariate函数可以用于生成服从帕累托分布的随机数。 帕累托分布是一种重尾分布,通常用于描述不均衡的现象,如财富、收入和城市人口等。帕累托分布的概率密度函数为: $$f(x) = \frac{ax_m^a}{x^{a+1}}$$ 其中,$a$ 是形状参数,$x_m$ 是比例参数。 下面是这个函数的使用方法: 语法: …

    2023年3月21日
    00
  • 详解Python random.getstate(获取当前随机数生成器的内部状态)函数的使用方法

    Python random.getstate() 函数是用于获取随机数生成器状态的函数,它返回一个包含生成器内状态的对象,以便将该状态存储到文件或数据库等地方,以便稍后恢复相同的状态。 这个函数在模拟和模型实验中非常有用,因为它可以让你精确定位随机数生成的时刻和构成。在这篇攻略中,我们将详细介绍 random.getstate() 函数的使用方法,以及两个实…

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

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

    Random模块 2023年3月21日
    00
  • 详解Python random.setstate(设置生成器的内部状态)函数的使用方法

    Python的random模块提供了一些用于生成随机数的函数,在某些情况下,我们需要生成指定的随机数序列,这时可以使用random.setstate函数来实现。 random.setstate函数作用 random.setstate函数用于设置随机数生成器的状态,即将生成器的内部状态变为指定的状态,从而达到生成指定的随机数序列的目的。 random.sets…

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

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

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