如何从具有给定均值,方差,偏度和峰度的正态分布中提取随机数

时间:2018-08-31 11:55:31

标签: python numpy random scipy normal-distribution

我正在尝试从给定的平均值方差偏度峰度的正态分布中抽取随机数 strong>。

我的第一次尝试是使用numpy函数random.normal但是据我所知,我只能通过一个位置( mean )和一个比例尺( std )参数。

第二种尝试是从间隔 [0,1] 中的均匀分布中提取随机数,然后将其通过 scipy.stats.norm 方法ppf。我看到 scipy 能够处理偏度和峰度,但是我看不到如何将偏度和峰度值传递给函数。

如果应该以完全不同的方式解决问题,请告诉我。

尝试1:

import numpy as np

def draw_normal():
    return np.random.normal(loc=0, scale=1) # how to pass skew and kurtosis (excess kurtosis) to the function 

尝试2

import numpy as np
from scipy.stats import norm


def draw_uniform():
    return np.random.uniform(0,1)

def draw_normal_alt():
    return norm.ppf(draw_uniform(),loc=0, scale=1) #how to pass skew and kurtosis (excess kurtosis) to func

1 个答案:

答案 0 :(得分:3)

您想要的不再是正态分布。您应该研究其他种类的分布。
注意,许多分布具有相同的均值,方差,偏度和峰度。
有关生成所需内容的python函数,请参见this