关于matplotlib:如何在python中绘制500对连续的随机数?

How to plot 500 pairs of successive random numbers in python?

我对python还不熟悉,我正在研究的一个问题是绘制500对连续的随机数。我有一个公式可以生成下面的数字:

X轴

1
2
3
4
5
6
7
8
9
>>> 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轴

1
2
3
4
5
6
7
8
9
>>> 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)放在loop语句中,但当我试图进行绘图时,这并不起作用。有什么想法吗?

我用import matplotlib.pyplot作为plt

提前感谢您的帮助!!


你在打印数字(print new_seed),如果你试图绘制它们,这将毫无用处。这有道理吗?

相反,您应该在生成时将每个编号保存到列表中的下一个可用位置。一种简单的方法是在循环之前创建一个空列表,每次生成一个数字时,只需append将其打印到列表中,而不是打印它。

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

同样适用于ylist

实际上,您要做的是使用列表理解,如:

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

这只是我上面所写内容的一个简短语法。(好吧,它也运行得更快)它确实要求您封装在函数中生成随机数的过程,但无论如何这是一个好主意。

然后可以使用matplotlib绘制xlistylist


您可能应该做一些(更多)Python教程。列表是Python的一个基本方面,您似乎不理解它们…

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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()