【问题标题】:How to plot 500 pairs of successive random numbers in python?如何在 python 中绘制 500 对连续随机数?
【发布时间】:2012-09-15 11:03:05
【问题描述】:

我是 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

提前感谢您的帮助!

【问题讨论】:

    标签: python matplotlib python-2.7


    【解决方案1】:

    您可能应该做一些(更多)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()
    

    【讨论】:

    • 感谢您的帮助,但我需要的数字来自上面的计算,而不是随机数
    • @Joran 的绘图方法是有效的。只需将 xy 值更改为您自己的值。
    • @Joran:使用像 OP 这样的循环可能更简单。您的 xy 行将仅包含一个数字,因为种子永远不会被重置。
    • 是的,我正在编辑它......对不起,我没有意识到他希望我只是为他做......我认为他对 python 有足够基本的了解,可以采用我原来的例子并应用它...
    • 我认为在这个网站上这应该是一个公平的假设。
    【解决方案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

    【讨论】:

    • 谢谢,这对理解我的主要问题很有帮助。问题不大,但要弄清楚如何将我的结果放入列表中!
    猜你喜欢
    • 2020-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-19
    • 1970-01-01
    • 1970-01-01
    • 2013-10-25
    • 2020-09-19
    相关资源
    最近更新 更多