1

我是 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) 放在循环语句中,但是当我尝试绘图时它不起作用。有任何想法吗?

我使用 import matplotlib.pyplot as 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 来绘制xlistylist.

于 2012-09-24T00:29:41.173 回答