我正在从 MATLAB 迁移到 Julia,我正在尝试生成
1:n
范围内的随机整数。
对于
n < 21
,
rand(r[1:n])
有效。
但是对于
n > 20
,例如,rand(r[1:21])
,我收到以下消息:
ERROR: BoundsError() in getindex at range.jl:121
您可以将范围作为
rand
的第一个参数,如 rand(1:n)
:
julia> rand(1:10)
7
julia> rand(1:10,10,10)
10x10 Array{Int64,2}:
10 2 5 8 5 5 3 7 1 3
5 1 4 2 4 4 1 6 6 9
8 1 3 9 4 8 7 8 7 10
3 8 1 5 7 9 7 8 10 7
5 8 5 6 6 2 2 7 4 3
10 4 8 8 10 5 1 10 5 1
6 1 8 1 6 5 7 10 6 10
5 10 2 5 4 5 4 1 3 9
5 4 6 4 4 1 7 8 1 5
10 2 6 4 3 10 7 3 8 7
一般
rand
函数的第一个参数通常给出“要从中采样的对象”,可以是值范围或Distributions.jl中定义的分布对象。
我无法评论 b/c 我没有足够的代表,但值得注意的是,您也可以使用 DiscreteUniform (来自 Distributions)。值得一提的是,它是一个正式的发行版,在某些情况下可能有一些优势。