我正在从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中定义的分布对象。
rand(S)
使用均匀分布还是其他概率分布?我的意思是,如果我想生成均匀的随机整数,通常会使用 rand(Uniform(1, n))
,然后应用 ceil(Int, ...)
或 floor(Int, ...)
。但我认为,如果采样是均匀的话写 rand(1:n)
更加正确。 - Ribz
r
?尝试使用rand(1:21)
。 - jverzani