【问题标题】:How is it possible to make a matrix with special random elements?如何用特殊的随机元素制作一个矩阵?
【发布时间】:2019-06-28 18:47:07
【问题描述】:

在 Julia 中有没有可能用特殊的随机元素制作一个矩阵? 例如,一个矩阵,其中每一行都有随机元素,但每个元素都应至少重复一次:

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 。你能帮我这个矩阵是怎么做的吗? 谢谢。

【问题讨论】:

  • 这应该相对容易完成,但是您能否指定您期望的采样模型(即用数学术语),因为可以使用的可能性很多。例如,我不清楚为什么您的示例中的第二行有问题,而第一行却没有。
  • 我在第一行也有问题。它应该有0,3。 {0,1,2,3} 至少被选中一次。如下:1 0 1 3 2; 3 3 2 1 0; 3 2 1 0 0

标签: julia


【解决方案1】:

你可以使用这个功能:

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

【讨论】:

  • 我学到了很多以前不知道的东西。非常感谢@Prof.Bogumił Kamiński
猜你喜欢
  • 2014-09-19
  • 1970-01-01
  • 2017-02-17
  • 1970-01-01
  • 2014-10-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多