朱莉娅 - 随机数组

Sam*_*rca 2 arrays random julia

如何使用 Julia 语言将随机数(例如从 1 到 100)添加到数组中?此外,数组必须具有已定义的长度(例如 30 个数字)。

Pic*_*ent 5

如果你的初始向量是v,你可以这样做:

v .+= rand(1:100,length(v))
Run Code Online (Sandbox Code Playgroud)
  • rand(1:100,length(v))v将生成一个由 1 到 100 之间的整数组成的随机向量,其长度与的 1 (length(v)部分)相同,您可以阅读rand()文档以获取更多详细信息。
  • .+=是执行“就地”向量加法的 Julia 语法。关于性能,这是一个需要了解的重要语法,请参阅“点调用”语法

更新一个更有效的方法,是:

map!(vi->vi+rand(1:100),v,v)
Run Code Online (Sandbox Code Playgroud)

注意:该方法更有效,因为它避免了临时向量的创建rand(1:100,length(v))


如果您想用随机整数填充(而不是添加)向量,请更新替代方案,这是 @DNS 的一个(请参阅评论):

using Random

v = Vector{Int}(undef,30)
rand!(v,1:100)
Run Code Online (Sandbox Code Playgroud)

笔记:

  • Vector{Int}(undef,30)是 Julia 创建包含 30 个未初始化整数的向量的方法。
  • rand!()函数用随机整数填充该向量。它在内部使用 for 循环。

rand!(A::AbstractArray{T}, X) where {T} = rand!(default_rng(), A, X)

# ...

function rand!(rng::AbstractRNG, A::AbstractArray{T}, sp::Sampler) where T
    for i in eachindex(A)
        @inbounds A[i] = rand(rng, sp)
    end
    A
end
Run Code Online (Sandbox Code Playgroud)