我有用于计算任何给定集合的组合或排列数量的代码。
((math.comb(n,k))和(math.perm(n,k))因此,烫发=(math.perm(10,5)),烫发== 30240排列
我想生成随机排列以及n和k的组合,因此,如果n = 10,并且k = 5,我将获得3,7,1,2,9作为烫发或梳理的效果
我将为此使用什么数学函数?
编辑:该代码应从10个随机选择中生成k个值的数组,并且对于从主集合(n)中选择的每个值(k),该组合应删除每个值(k),因此不存在(n)的重新排列。数学的分支是组合数学(如果有帮助的话),我确信必须已经为此创建了一个函数。我有数百万个数组可以生成和处理。
您可以使用与random
相同的Python math
模块(因此您无需使用pip等进行安装)。首先定义您要从中随机选择k个元素的集合,在您的示例中,它是1到10之间的整数集合,因此我使用S=[i for i in range(1,11)]
(记住范围中的最后一个元素是您给出的整数之前的元素作为范围的终止)。然后,要接收带有替换的k
元素,请使用choices
软件包中的random
命令,对于不带替换的情况,请使用sample
命令。代码在下面。
import random
S=[i for i in range(1,11)]
A=random.choices(S,k=5)
B=random.sample(S,5)
例如,当我在让python分别显示S,A和B之后运行上述代码时,我收到了以下结果。
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[8, 3, 2, 6, 8]
[3, 9, 6, 1, 10]