Как сделать матрицу со специальными случайными элементами? - PullRequest
2 голосов
/ 28 июня 2019

Есть ли в Юлии возможность создать матрицу со специальными случайными элементами? например, матрица, в каждой строке которой есть случайные элементы, но каждый элемент должен повторяться хотя бы один раз:

n = zeros(Int,3, 5)

    for i in indices(n, 1)

        for j in indices(n, 2)

            n[i,j]=rand(0:3)

        end

    end
 n=
3×5 Array{Int64,2}:
 1  2  1  1  2
 3  3  2  2  0
 3  2  1  0  0

но во втором ряду нет 1. Не могли бы вы помочь мне, как эта матрица сделана? Спасибо.

1 Ответ

3 голосов
/ 28 июня 2019

Вы можете использовать эту функцию:

using Random

function randfill!(m::AbstractMatrix, s::AbstractVector)
    n1 = length(s)
    n2 = size(m, 2)
    @assert n2 >= n1
    for i in 1:size(m,1)
        m[i, 1:n1] .= s
        for j in n1+1:n2
            m[i,j] = rand(s)
        end
        shuffle!(view(m, i, :))
    end
    m
end
...