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

在Julia中生成二进制值填充固定向量的所有可迭代组合

Julia生成所有二进制向量的可迭代对象方案

如果需要生成长度为n的二进制向量的所有可能(共2^n种),且保留所有重复元素的组合、不去重,这里有两种简洁的惰性迭代方案:

方案一:利用Iterators.product

Iterators.product可以生成多个集合的笛卡尔积,完全保留所有组合,不会移除任何"退化排列",正好匹配需求:

using Iterators

n = 4  # 替换成你的目标向量长度
# 生成n个[0,1]集合的笛卡尔积迭代器
binary_iter = Iterators.product(fill([0,1], n)...)

遍历迭代器时,每个元素是元组,可通过collect()转为向量:

for tup in binary_iter
    vec = collect(tup)
    # 在这里添加你的筛选逻辑,满足条件再存入矩阵
    # 示例:if sum(vec) == 2; push!(matrix, vec); end
end

方案二:位运算转换(无需额外包)

通过遍历0到2^n - 1的整数,将每个数转为二进制向量,同样是惰性迭代实现:

n = 4
# 生成迭代器,每个元素是长度为n的二进制向量
binary_iter = (reverse(digits(x, base=2, pad=n)) for x in 0:2^n - 1)

直接遍历即可得到向量:

for vec in binary_iter
    # 执行你的筛选逻辑
end

两种方案都是惰性求值,不会一次性生成所有向量,能在筛选阶段就跳过不符合条件的元素,节省内存,完美适配"先筛选再存入矩阵"的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 12:22:06