2017-04-25 20 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

Julia 'range'の' range'は 'start'と' length'の2つのパラメータを必要とします。あなたの 'range(n)'呼び出しを 'range(1、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 

ある1Sの代わりに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機能の権利を使用するためのヒントをいただき、ありがとうございます。

関連する問題