1

私はPythonを初めて使用しますが、私が取り組んでいる問題の1つは、500ペアの連続する乱数をプロットすることです。以下に示す数値を生成する式があります。

x軸

>>> a=128
>>> c=0
>>> m=509
>>> n=500
>>> seed = 10
>>> for i in range (1,n):
    new_seed=(a*seed+c)%m
    seed = new_seed
    print new_seed

y軸

>>> a=269
>>> c=0
>>> m=2048
>>> n=500
>>> seed = 10
>>> for i in range (1,n):
    new_seed=(a*seed+c)%m
    seed = new_seed
    print new_seed

私が今疑問に思っているのは、これらの結果を配列またはリストに変換する方法です。ループステートメントにplt.plot(new_seed)を入れようとしましたが、プロットしようとすると機能しませんでした。何か案は?

importmatplotlib.pyplotをpltとして使用しました

助けてくれてありがとう!

4

2 に答える 2

3

あなたはおそらくいくつかの(もっと)pythonチュートリアルをするべきです..リストはpythonの基本的な側面であり、あなたはそれらを理解していないようです...

import matplotlib.pyplot as plt
import random
x = []
a,seed,c,m,n = 128,10,0,509,500
for i in range (1,n):
   new_seed=(a*seed+c)%m
   seed = new_seed
   x.append( new_seed)


a,seed,c,m,n = 269,10,0,2048,500
y= []
for i in range (1,n):
   new_seed=(a*seed+c)%m
   seed = new_seed
   y.append( new_seed)
plt.plot(x,y)
plt.show()
于 2012-09-24T00:16:05.070 に答える
2

数字()を印刷しているprint new_seedので、それらをプロットしようとしている場合は役に立ちません。それは理にかなっていますか?

代わりに行うべきことは、各番号を生成するときに、リスト内の次に使用可能な位置に保存することです。これを行う簡単な方法は、ループの前に空のリストを作成し、数値を生成するたびに、appendそれを出力するのではなく、リストに追加することです。

xlist = []
for i in xrange(n):
    new_seed = # generate the number
    xlist.append(new_seed)

同様にylist

実際には、次のようなリスト内包表記を使用します。

xlist = [generate_number(...) for i in xrange(n)]

これは、私が上で書いたものの単なる省略構文です。(まあ、それはまたより速く実行されます)それはあなたが関数で乱数を生成するプロセスをカプセル化することを要求します、しかしそれはとにかく良い考えです。

次に、matplotlibを使用してxlist対をプロットできますylist

于 2012-09-24T00:29:41.173 に答える