2014-06-20 52 views
20

我从matlab迁移到julia,我试图在1范围内生成一个随机整数:N范围内生成随机整数朱莉娅

n < 21

rand(r[1:n])作品。

然而

n > 20,e.g rand(r[1:21])

我得到这个消息。

ERROR: BoundsError() in getindex at range.jl:121

+0

'r'是什么?可能是20元素的矢量?如果我正确地理解了你,'rand(1:n)'应该是你需要的。 –

+0

什么是'r'?试试'兰特(1:21)'。 – jverzani

回答

28

你可以给一个范围内的第一个参数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中定义的一系列值或分布对象。

+0

'rand(S)'在S上使用统一采样还是其他概率分布?我的意思是如果我想生成统一的随机整数,我通常会做'rand(Uniform(1,n))',然后我应用'ceil(Int,...)'或'floor(Int,...) 。但是我认为,写'rand(1:n)'是更正确的 - 如果采样是uniform_。 – Ribz