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
提前感谢您的帮助!!
你在打印数字(
相反,您应该在生成时将每个编号保存到列表中的下一个可用位置。一种简单的方法是在循环之前创建一个空列表,每次生成一个数字时,只需
1 2 3 4 | xlist = [] for i in xrange(n): new_seed = # generate the number xlist.append(new_seed) |
号
同样适用于
实际上,您要做的是使用列表理解,如:
1 | xlist = [generate_number(...) for i in xrange(n)] |
这只是我上面所写内容的一个简短语法。(好吧,它也运行得更快)它确实要求您封装在函数中生成随机数的过程,但无论如何这是一个好主意。
然后可以使用matplotlib绘制
您可能应该做一些(更多)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() |