📜  Python中的Numpy.random中的rand vs normal

📅  最后修改于: 2022-05-13 01:55:02.912000             🧑  作者: Mango

Python中的Numpy.random中的rand vs normal

在本文中,我们将详细研究 Numpy.random.rand() 方法和 Numpy.random.normal() 方法之间的主要区别。

  • 关于随机:对于随机,我们采用 .rand()
    numpy.random.rand(d0, d1, ..., dn) :
    创建一个指定形状的数组和
    用随机值填充它。
    参数 :
    d0, d1, ..., dn : [int, optional]
    Dimension of the returned array we require, 
    
    If no argument is given a single Python float 
    is returned.
    

    返回 :

    Array of defined shape, filled with random values.
    
  • 关于正常:对于随机,我们采用 .normal()
    numpy.random.normal(loc = 0.0, scale = 1.0, size = None) :创建一个指定形状的数组并用随机值填充它,这实际上是 Normal(Gaussian)Distribution 的一部分。这是分布也因其特征形状而被称为钟形曲线。
    参数 :
    loc   : [float or array_like]Mean of 
    the distribution. 
    scale : [float or array_like]Standard 
    Derivation of the distribution. 
    size  : [int or int tuples]. 
    Output shape given as (m, n, k) then
    m*n*k samples are drawn. If size is 
    None(by default), then a single value
    is returned. 
    

    返回 :

    Array of defined shape, filled with 
    random values following normal 
    distribution.
    

    代码1:随机构造一维数组

    # Python Program illustrating
    # numpy.random.rand() method
       
    import numpy as geek
       
    # 1D Array
    array = geek.random.rand(5)
    print("1D Array filled with random values : \n", array)
    

    输出 :

    1D Array filled with random values : 
     [ 0.84503968  0.61570994  0.7619945   0.34994803  0.40113761]
    
    

    代码 2:按照高斯分布随机构造一维数组

    # Python Program illustrating
    # numpy.random.normal() method
       
    import numpy as geek
       
    # 1D Array
    array = geek.random.normal(0.0, 1.0, 5)
    print("1D Array filled with random values "
          "as per gaussian distribution : \n", array)
    # 3D array
    array = geek.random.normal(0.0, 1.0, (2, 1, 2))
    print("\n\n3D Array filled with random values "
          "as per gaussian distribution : \n", array)
    

    输出 :

    1D Array filled with random values as per gaussian distribution : 
     [-0.99013172 -1.52521808  0.37955684  0.57859283  1.34336863]
    
    3D Array filled with random values as per gaussian distribution : 
     [[[-0.0320374   2.14977849]]
    
     [[ 0.3789585   0.17692125]]]
    


    Code3:说明 NumPy 中随机与正常的图形表示的Python程序

    # Python Program illustrating
    # graphical representation of 
    # numpy.random.normal() method
    # numpy.random.rand() method
       
    import numpy as geek
    import matplotlib.pyplot as plot
       
    # 1D Array as per Gaussian Distribution
    mean = 0 
    std = 0.1
    array = geek.random.normal(0, 0.1, 1000)
    print("1D Array filled with random values "
          "as per gaussian distribution : \n", array);
      
    # Source Code : 
    # https://docs.scipy.org/doc/numpy-1.13.0/reference/
    # generated/numpy-random-normal-1.py
    count, bins, ignored = plot.hist(array, 30, normed=True)
    plot.plot(bins, 1/(std * geek.sqrt(2 * geek.pi)) *
              geek.exp( - (bins - mean)**2 / (2 * std**2) ),
              linewidth=2, color='r')
    plot.show()
      
      
    # 1D Array constructed Randomly
    random_array = geek.random.rand(5)
    print("1D Array filled with random values : \n", random_array)
      
    plot.plot(random_array)
    plot.show()
    

    输出 :

    根据高斯分布填充随机值的一维数组:[ 0.12413355 0.01868444 0.08841698 ..., -0.01523021 -0.14621625 -0.09157214] 一维数组填充随机值:[0.72654409 0.26955422 0.19500427 0.37178803 0.10196284]

    重要的 :
    在代码 3 中,图 1 清楚地显示了高斯分布,因为它是根据通过 random.normal() 方法生成的值创建的,因此遵循高斯分布。
    图 2 不遵循任何分布,因为它是由 random.rand() 方法生成的随机值创建的。