截断正态分布的随机数生成方法


前言

对于一般的正态分布,μ=0,σ=1的分布在python中的代码:
plt.hist(np.random.normal(0,1,size = 1000),bins=100) hist是画图工具


一、截断正态分布是什么?

截断分布是指,限制变量x取值范围(scope)的一种分布。例如,限制x取值在0到50之间,即{0<x<50},正态分布是一种不截断的分布,那么进行截断之后的一些改变如下:

1.概率密度函数:(限制了a,b的范围)

这里引用另外的一篇文章,可以详见其公式:
https://blog.csdn.net/lanchunhui/article/details/61623189

二、如何截断生成想要的范围的正态分布

1.说明本人想要截断范围的正态分布的意图

想要去拟合数据,根据观察原始数据分布在1的左右,在使用GAN生成数据的时候发现拟合不到,那么猜想可能是我生成虚假数据的时候范围有问题,所以想要限制范围的正态分布

2.奉上代码,并且简要的介绍

俩种方法 1.自己定义函数实现,在函数里面调用python中的
from scipy.stats import truncnorm 2.直接调用truncnorm,给明参数,参数的解读之后奉上
参考链接:
https://blog.csdn.net/CSDNBigBoy/article/details/97034126
https://blog.csdn.net/qq_31239371/article/details/109367801

import numpy as np
import matplotlib.pyplot as plt
from math import sqrt
from scipy.stats import truncnorm
truncnorm(a=1., b=1.5, scale=0.95).rvs(size=[1000,576])
plt.hist(np.random.normal(0,1,size = 1000),bins=100)

在这里插入图片描述

补充:


版权声明:本文为qq_42524215原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。