2014-06-20 21 views
20

Jestem migracji z matlab do julia i próbuję wygenerować losową liczbę całkowitą w zakresie 1: nGenerowanie losowe całkowitą w zakresie w julia

dla n < 21,

rand(r[1:n]) prace.

jednak dla n > 20, np rand(r[1:21])

mi się ten komunikat.

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

+0

Co to jest "r"? Może wektor 20 elementów? 'rand (1: n)' powinno być wszystkim, czego potrzebuję, jeśli dobrze cię rozumiem. –

+0

Co to jest "r"? Spróbuj 'rand (1:21)'. – jverzani

Odpowiedz

28

Można podać szereg jako pierwszy argument rand, jak w 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 

Pierwszym argumentem dla ogółu rand funkcji zwykle daje "rzeczy do spróbowania z", czy to zakres wartości lub obiekt dystrybucyjny zdefiniowany w Distributions.jl.

+0

Czy 'rand (S)' używa jednolitego próbkowania lub innego rozkładu prawdopodobieństwa nad 'S'? Chodzi mi o to, że jeśli chciałbym generować jednolitą losową liczbę całkowitą, zwykle robię 'rand (jednolity (1, n)), a następnie stosuję' ceil (Int, ...) 'lub' floor (Int, ...) ' . Ale myślę, że pisanie 'rand (1: n)' jest o wiele bardziej poprawne, jeśli próbkowanie odbywa się jednolicie. – Ribz

Powiązane problemy