2017-01-27 2 views
0

いくつかの軌跡を持つランダムなパスをコーディングしようとしています。私のコードは下にあり、パスを計算しますが、forループは複数の異なるパスを作成しません。むしろ、それはそれ自身の上に同じ経路をn回プロットする。同じforループ内のn個の異なるパスをグラフ化し、その値を1つの配列に格納しておき、隣り合わせにグラフ化したいと考えています。私が間違って何をしているのか?複数の軌跡を持つランダムなパス(ループ/配列が正しくない場合)

from numpy.random import randint 
n = 1000 
moves = randint(0, 2, size=n) 
y = 0 
x = [y] 
n2 = 5 

for t in range(n2): 
    for i in moves: 
     if i == 1: 
      y = y + 1 
     if i == 0: 
      y = y - 1 
     x.append(y) 
    plt.plot(x) 
    y = 0 
    x = [y] 
+0

等、paths[2*n:3*n]paths[n:2*n]次いで、別の代替は、すべての線形リスト内のパス(又は1次元アレイ)次々に格納することになるので、paths[:n]は、最初のパスであろう移動= randint(0、2、サイズ= n) ':' randint'はそれほど多くの引数を取らない –

+0

'randint'の定義は何ですか?これは 'random'モジュールの通常のモジュールではありません。https://docs.python.org/3/library/random.html#random.randint –

+0

ライブラリのインポートが含まれている必要があります。謝罪します。コードを更新しました。 – BHudson

答えて

1

あなたは、ループの各反復で異なるパスを作成したい場合、あなたはループの内側にrandintを呼び出す必要があり、そしてあなたがすべて格納する場合があり

from numpy.random import randint 
n = 1000 
n2 = 5 

for t in range(n2): 
    moves = randint(0, 2, size=n) 
    y = 0 
    x = [y] 
    for i in moves: 
     if i == 1: 
      y = y + 1 
     if i == 0: 
      y = y - 1 
     x.append(y) 
    plt.plot(x) 
    y = 0 
    x = [y] 

をパスを計算計算されたパスを、あなたはリストや配列に格納することができます。そして、

from numpy.random import randint 
n = 1000 
n2 = 5 
paths = [] # use something like numpy.empty((n2, n)) to use an array 

for t in range(n2): 
    moves = randint(0, 2, size=n) 
    y = 0 
    x = [y] 
    for i in moves: 
     if i == 1: 
      y = y + 1 
     if i == 0: 
      y = y - 1 
     x.append(y) 
    paths.append(x) # use something like paths[t] = x with an array 
    plt.plot(x) 
    y = 0 
    x = [y] 

paths[i]は、i番目の計算された経路を含み、そしてう0(またはpaths[i, j]は配列あり)のi番目のパスのj番目の位置です。

さらに `

+0

ありがとう!それはたくさんのことが完璧に動くのを助け、説明に感謝します。回答としてマーク。 – BHudson

関連する問題