2017-04-25 30 views
-2

我是新來Julia翻譯隨機遊走的Python代碼。該功能似乎很好,但是當我嘗試用值執行它時,我得到一個錯誤。Julia MethodError:沒有方法匹配範圍(:: Int64)

所以這是我的功能工作正常:

function random_walk(n) 
x=0 
for i in range(n) 
    dx=rand([1, -1]) 
    x+=dx 
    return x 
end 
end 

random_walk (generic function with 1 method)

但是,當我試圖執行這個例子中,我得到一個錯誤:

for i in range(25) 
    walk=random_walk(10) 
show(walk, "Distance=", abs(walk[1])) 
end 

MethodError: no method matching range(::Int64)
Closest candidates are:
range(::Real, ::Integer) at range.jl:103
range{T}(::T, ::Integer) at range.jl:107
range(::Real, ::AbstractFloat, ::Integer) at range.jl:199
...

in anonymous at ./:?

+3

朱莉婭範圍內的'range'需要2個參數:'start'和'length'。嘗試用'range(1,n)'替換你的'range(n)'調用,或者更好的是用'1:n'來代替。 – niczky12

+1

這是['range'](https://docs.julialang.org/en/release-0.4/stdlib/math/?highlight=range#Base.range)你試圖使用什麼? – Goyo

回答

2

Python的的等效

for i in range(25): 
    ... 

for i in 0:24 
    ... 
end 

但是通常在朱莉婭一個可與1秒,而不是0,和會寫

for i in 1:25 
    ... 
end 
-1

所以,問題解決了。你還需要使用print而不是show

for i in 1:25 
    walk=random_walk(10) 
print(walk, "Distance=", abs(walk)) 
end 

謝謝你的提示使用range功能權限。

相關問題