numpy.random 中rand和randn 函数的区别

    技术2025-09-14  45

    在学习numpy时,遇到了rand和randn两个函数,一开始不注意还把这俩当成同一个函数了。后来从网上查到,rand产生的是位于(0, 1)内的随机数,我猜测可能是服从标准均匀分布的随机数;randn产生的是服从正态分布的随机数,但是正态分布的参数(均值和方差)没有查到。因此就想着自己试验一下,试着找到这两个问题的答案。 下面以randn函数为例: 一开始想着如果是正态分布的话,那反映到图形上就是一个钟形,如果能得到一个钟形,就说明是正态分布;进一步如果是正态分布,从坐标轴上就可大概看出参数是多少,比如如果是标准正态,参数就是(0,1)。因此想到了用matplotlib提供的画图函数,具体点是

    import matplotlib.pyplot as plt plt.plot(randn(100)) plt.show()

    得到的图形是这样的: 才明白过来,这个只是个一维的数组,与那个经典的钟形相去甚远。因此决定换个办法。 又想到了,假如这是个正态分布,那么便可直接求其均值和方差,如果得到(0,1)便可说明其是标准正态分布: 1> 求均值 2> 求方差 可以看到随着生成的随机数的数量的增大,均值逐渐趋向于0,方差逐渐趋向于1,因此可以验证randn生成的是参数为(0, 1)的正态分布的随机数。 当然这里必须要强调的一点就是,以上全部基于随机数确实是属于正态分布的假设。 同理,也可以得到rand生成的是(0,1)上的标准均匀分布随机数。 最后有感慨的一点就是,知识应该就是要串联起来,旧知识带动新知识,自己动手去应用,去解决新问题,这样的学习才是真的有意思。

    Processed: 0.025, SQL: 9