python正态分布图
‘壹’ python求正态分布的随机数
比如要生成符合f()分布的随机数,f的反函数是g,那么先生成定义域内的均匀分布的随机数,在带入g(x)计算就好。
对于你这个问题,python有自带的方法。
#!/usr/bin/python2.7
import random
random.normalvariate(带三个参数,你试试)
‘贰’ 如何用python使变量服从正太分布
正太分布哈哈
首先,如果想要你的一千万个数据严格服从正态分布,那么先确定这个分布的数据,也就是均值和方差,N(u,o),这里均值 u=50,方差 o 由你确定,根据正态分布概率密度函数,对于每一个 1~100 之间的整数 x,都可以确定它出现的概率 f(x):
正态分布概率密度函数
而共有 10 000 000 个数字,那么 10000000*f(x) 就是 x 出现的频率。
因此,使用一个 101 元素的数组 freq[] 存放这些数出现的频率,用 f(x)*10000000 逐个计算数组元素,也就是 x 应该出现的次数,假如说 2 一共会出现 3 次,那么 freq[2]=3,计算出之后放在那里,作为一个参照。再初始化一个全为 0 的 100 个元素的数组 sam[],记录每个数字已经出现的次数。之后开始从 1~100 随机,每随机一个数字 x 都给 sam[x] 加1,再和 freq[x] 比较,如果超出了 freq[x] 就说明这个数字已经不能再出现了,将其舍弃。记录随机成功的次数,达到了 10000000 次即可。
‘叁’ 如何将已知数据用python写成正态分布并且画图
importnumpyasnp
importmatplotlib.pyplotasplt
y=[2,5,7,10,16,23,20,16,9,6,6,3,1,1]
x=[59,60,61,62,63,64,65,66,67,68,69,70,71,72]
fig,ax=plt.subplots()
ax.bar(x,y,0.3,alpha=0.5,color='b',label='abc')
plt.axis([55,75,0,25])
ax.set_xlabel('XXX')
ax.set_ylabel('YYY')
ax.set_title('ABC')
ax.legend()
fig.tight_layout()
plt.show()
‘肆’ 如何在Python中计算累积正态分布
Python正态分布概率计算方法,喜欢算法的伙伴们可以参考学习下。需要用到math模块。先了解一下这个模块方法,再来写代码会更好上手。
def st_norm(u):
'''标准正态分布'''
import math
x=abs(u)/math.sqrt(2)
T=(0.0705230784,0.0422820123,0.0092705272,
0.0001520143,0.0002765672,0.0000430638)
E=1-pow((1+sum([a*pow(x,(i+1))
for i,a in enumerate(T)])),-16)
p=0.5-0.5*E if u<0 else 0.5+0.5*E
return(p)
def norm(a,sigma,x):
'''一般正态分布'''
u=(x-a)/sigma
return(st_norm(u))
while 1:
'''输入一个数时默认为标准正态分布
输入三个数(空格隔开)时分别为期望、方差、x
输入 stop 停止'''
S=input('please input the parameters:\n')
if S=='stop':break
try:
L=[float(s) for s in S.split()]
except:
print('Input error!')
continue
if len(L)==1:
print('f(x)=%.5f'%st_norm(L[0]))
elif len(L)==3:
print('f(x)=%.5f'%norm(L[0],L[1],L[2]))
else:
print('Input error!')
‘伍’ python 怎么求标准正态分布某个值
示例:
1、from numpy import *;
2、def rand_Matrix():
3、randArr=random.randn(2,3);
4、randMat=mat(randArr);
5、return randMat;
一种结果如下:
1、matrix([[ 0.3150869 , -0.02041996, -0.15361071],
2、[-0.75507988, 0.80393683, -0.31790917]])
(5)python正态分布图扩展阅读
Python正态分布概率计算方法:
def st_norm(u):
'''标准正态分布'''
import math
x=abs(u)/math.sqrt(2)
T=(0.0705230784,0.0422820123,0.0092705272,
0.0001520143,0.0002765672,0.0000430638)
E=1-pow((1+sum([a*pow(x,(i+1))
for i,a in enumerate(T)])),-16)
p=0.5-0.5*E if u<0 else 0.5+0.5*E
return(p)
def norm(a,sigma,x):
'''一般正态分布'''
u=(x-a)/sigma
return(st_norm(u))
while 1:
'''输入一个数时默认为标准正态分布
输入三个数(空格隔开)时分别为期望、方差、x
输入 stop 停止'''
S=input('please input the parameters: ')
if S=='stop':break
try:
L=[float(s) for s in S.split()]
except:
print('Input error!')
continue
if len(L)==1:
print('f(x)=%.5f'%st_norm(L[0]))
elif len(L)==3:
print('f(x)=%.5f'%norm(L[0],L[1],L[2]))
else:
print('Input error!')
‘陆’ 如何用python求解一个带正态分布和ln函数的方程
import scipy.stats as sta
import math
def option_call(s,x,r,sigma,t):
d1=(math.log(s/x)+(r+sigma**2/2)*t)/(math.sqrt(t)*sigma)
d2=d1-sigma*math.sqrt(t)
c=s*sta.norm.cdf(d1,0,1)-x*sta.norm.cdf(d2,0,1)*math.exp(-r*t)
return c
‘柒’ python如何实现求标准正太分布反函数Φ^(
一般的正态分布可以通过标准正态分布配合数学期望向量和协方差矩阵得到。如下代码,可以得到满足一维和二维正态分布的样本。希望有用,如有错误,欢迎指正!
‘捌’ 如何用python求出某已知正态分布的概率密度
Python正态分布概率计算方法,喜欢算法的伙伴们可以参考学习下。需要用到math模块。先了解一下这个模块方法,再来写代码会更好上手。
def st_norm(u):
'''标准正态分布'''
import math
x=abs(u)/math.sqrt(2)
T=(0.0705230784,0.0422820123,0.0092705272,
0.0001520143,0.0002765672,0.0000430638)
E=1-pow((1+sum([a*pow(x,(i+1))
for i,a in enumerate(T)])),-16)
p=0.5-0.5*E if u<0 else 0.5+0.5*E
return(p)
def norm(a,sigma,x):
'''一般正态分布'''
u=(x-a)/sigma
return(st_norm(u))
while 1:
'''输入一个数时默认为标准正态分布
输入三个数(空格隔开)时分别为期望、方差、x
输入 stop 停止'''
S=input('please input the parameters:\n')
if S=='stop':break
try:
L=[float(s) for s in S.split()]
except:
print('Input error!')
continue
if len(L)==1:
print('f(x)=%.5f'%st_norm(L[0]))
elif len(L)==3:
print('f(x)=%.5f'%norm(L[0],L[1],L[2]))
else:
print('Input error!')
‘玖’ 用python求出正态分布1.6对应的百分位数的函数是什么
正态分布最早是由一位数学家从二项分布在n趋近于无穷大时的近似而推导出来的。 二项分布的概率密度C(m,n)*p^m*(1-p)^(n-m),考虑此函数在n趋近于无穷大,m在n/2附近时的近似。 求近似时,关键的一步是用斯特灵公式:N!约等于N的N次方乘以根号下2πN再除以e的N次方,当N非常大时。在具体推导中,对于n,n-m,m都可以适用此近似。 另一个关键步骤是,推导中用d^2=np(1-p)来代换,也就是说,二项分布的分散,对于二项分布的近似,仍然是一个有意义的有限的值。