You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Julia中生成含重复元素的排列(学生校服样本空间)

如何在Julia中生成带重复元素的排列样本空间?

你用permutations函数得不到预期结果,是因为这个函数只生成无重复选取元素的排列——你的colors只有2个元素,要生成长度为3的排列,它无法重复选取同一个元素,自然出不来8种组合。

要生成允许元素重复的全排列(也就是笛卡尔积,对应每个学生独立选颜色的所有可能),有两种简单方法:

方法一:用笛卡尔积生成(推荐)

利用Iterators.product生成所有可能的颜色组合,再整理成需要的格式:

# Julia 1.6+ 可直接用Base.Iterators,无需额外安装包
using Base.Iterators

colors = ['R', 'G']
n = 3

# 生成n次颜色集合的笛卡尔积
product_result = Iterators.product(fill(colors, n)...)
# 展平结果并转成字符串格式
sample_space = [join(s) for s in vec(product_result)]

println(sample_space)
# 输出:["RRR", "GRR", "RGR", "GGR", "RRG", "GRG", "RGG", "GGG"]

方法二:通过二进制映射生成

利用数字的二进制表示对应颜色选择,0映射到R、1映射到G(反之亦可):

colors = ['R', 'G']
n = 3

# 遍历0到2^n-1的所有数字,转成n位二进制后映射为颜色
sample_space = [join(colors[d+1] for d in digits(i, base=2, pad=n)) for i in 0:2^n-1]

println(sample_space)
# 输出:["RRR", "RRG", "RGR", "RGG", "GRR", "GRG", "GGR", "GGG"]

参考相关问题:

  • 《如何在Julia中生成数组的所有排列?》
  • 《Julia:带替换的n元素唯一集合生成》

内容的提问来源于stack exchange,提问作者Vinod

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 11:46:15