Возможно, вы ищете Iterators.product
, хотя он не генерирует именно то, что вы запрашиваете
julia> n1, n2, n3, n4, n5 = 2, 3, 4, 5, 6;
julia> a = Iterators.product(1:n1, 1:n2, 1:n3, 1:n4, 1:n5)
Base.Iterators.ProductIterator{NTuple{5,UnitRange{Int64}}}((1:2, 1:3, 1:4, 1:5, 1:6))
julia> first(a)
(1, 1, 1, 1, 1)
julia> reduce(vcat, a)
600-element Array{NTuple{5,Int64},1}:
(1, 1, 1, 1, 1)
(2, 1, 1, 1, 1)
(1, 2, 1, 1, 1)
(2, 2, 1, 1, 1)
....
Он не создает запрошенную вами матрицу, но большую часть времени вы будете генерироватьМатрица такая, чтобы использовать ее для чего-то другого.В этом случае это лучше, так как это позволяет избежать выделения временной матрицы.
@ BogumiłKamiński написал в комментарии ниже, что вы можете получить матрицу (не упорядоченную точно так же, как в вашем примере) из объекта
julia> reduce(vcat, reduce.(hcat, a))
720×5 Array{Int64,2}:
1 1 1 1 1
2 1 1 1 1
1 2 1 1 1
...
, что, возможно, не первое, о чем можно подумать, но хорошо справляется со своей работой.