2012-09-24 103 views
0

我是新來的蟒蛇和我正在努力的問題之一是繪製500對連續的隨機數。我已生成的數字的公式如下所示:如何在python中繪製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)放到循環語句中,但是當我試圖繪圖時沒有奏效。有任何想法嗎?

我用進口matplotlib.pyplot如PLT

在此先感謝您的幫助!

回答

2

你或許應該做一些(更多)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() 
+0

感謝您的幫助,但我需要的數字是從上面的計算不是隨機數 – scrayon

+0

@Joran的繪圖方法是有效的,但。只需將'x'和'y'值更改爲您自己的值。 –

+0

@Joran:使用像OP這樣的循環可能更簡單。你的'x'和'y'行每個只包含一個數字,因爲種子永遠不會被重置。 – DSM

2

要打印的號碼(print new_seed)如果你想要繪製它們,這不會有任何用處。那有意義嗎?

你應該做的是將每個數字保存到列表中的下一個可用位置。一個簡單的方法是在循環之前創建一個空列表,並且每次生成一個數字時,只需要將該列表打印到列表中,而不是將其打印出來。

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繪製xlistylist

+0

謝謝,這對理解我的主要問題非常有幫助。問題不在於解決問題,而是要弄清楚如何將結果放入列表中! – scrayon