与重复的组合
此示例演示使用库从项列表中生成具有重复项的组合 Combinatorics 在朱莉娅。
导言
"与重复组合"算法允许您获得给定大小的所有可能子集,其中元素可以重复。 这是有用的,例如,当计算选择项目的方式的数量时,如果您可以多次选择相同的项目(例如,从几种类型的馅饼中选择2个馅饼)。
这种方法用于组合学和概率论问题。
In [ ]:
# 如果尚未安装Combinatorics包,请运行该行:
import Pkg; Pkg.add("Combinatorics")
In [ ]:
# 导入组合函数库以使用组合函数
using Combinatorics
将其与字符串数组一起使用的示例
创建行列表并显示其内容。 接下来,我们生成长度为2的重复的所有可能组合。 这种组合也被称为"multicombinations"
In [ ]:
# 我们定义一个字符串数组—这些将是我们的源元素。
l = ["卷心菜", "马铃薯", "果酱"] # 馅饼的种类
# 印刷标题
println("名单: ", l)
println("组合:")
# 我们通过长度为2的重复的所有组合
for c in with_replacement_combinations(l, 2)
println(c) # 我们输出每个组合
end
计算组合的数目
功能 with_replacement_combinations() 它也可以与 ranges (范围)。 我们计算从1到10的数字重复的三元素组合的数量。 这对应于具有重复的组合的公式:
哪里 -不同元素的数量,
-组合的大小。
为 和 将是 .
In [ ]:
# 我们从范围1计算具有重复的三元素组合的总数。.10
length_combs = length(with_replacement_combinations(1:10, 3))
Out[0]:
结论
我们已经审查了图书馆的使用情况 Combinatorics 在Julia编程语言中,用于生成具有重复的组合。 我们创建了一个包含饼图名称列表的示例,显示了所有可能的重复对,并计算了从1到10的整数中此类三元组的总数。
这使您可以高效地执行组合计算,而无需自己实现算法。
该示例是使用[罗塞塔代码]的材料开发的(https://rosettacode.org/wiki/Combinations_with_repetitions )