導航:首頁 > 編程語言 > python正態分布

python正態分布

發布時間:2022-01-27 17:45:57

⑴ 如何用python語言,產生某一區間內的正態分布的100個隨機數

import matplotlib.pyplot as plt
import scipy.stats as stats

lower, upper = 3.5, 6
mu, sigma = 5, 0.7
X = stats.truncnorm(
(lower - mu) / sigma, (upper - mu) / sigma, loc=mu, scale=sigma)
N = stats.norm(loc=mu, scale=sigma)

fig, ax = plt.subplots(2, sharex=True)
ax[0].hist(X.rvs(10000), normed=True)
ax[1].hist(N.rvs(10000), normed=True)
plt.show()

⑵ 如何將已知數據用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使變數服從正太分布

正太分布哈哈

首先,如果想要你的一千萬個數據嚴格服從正態分布,那麼先確定這個分布的數據,也就是均值和方差,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 怎麼求標准正態分布某個值

示例:

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]])

(4)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 numpy產生一個正態分布隨機數的向量或者矩陣

import numpy as np
x = np.random.randn(4, 5) # 生成一個4*5的服從正態分布(0, 1)的數組
print(x)

結果:
array([[ 1.49880806, 0.49802583, -0.73570234, 0.6838595 , -1.07146133],
[-0.80834618, 0.28833047, 0.6492072 , -1.23454671, -0.42839883],
[ 0.75936243, -0.67680322, 1.06767814, -0.11232622, -0.62300974],
[-1.66010364, -0.60023795, 0.35930247, -0.5079359 , 0.21811627]])

⑹ python 如何產生0-1正態分布的隨機數

random.normalvariate(0,1)

⑺ python怎樣生成正太分布的隨機數

作者:採石工
鏈接:https://www.hu.com/question/39823283/answer/115241445
來源:知乎
著作權歸作者所有,轉載請聯系作者獲得授權。

一般的正態分布可以通過標准正態分布配合數學期望向量和協方差矩陣得到。如下代碼,可以得到滿足一維和二維正態分布的樣本。希望有用,如有錯誤,歡迎指正!

# coding=utf-8

import numpy as np
from numpy.linalg import cholesky
import matplotlib.pyplot as plt

sampleNo = 1000;
# 一維正態分布
# 下面三種方式是等效的
mu = 3
sigma = 0.1
np.random.seed(0)
s = np.random.normal(mu, sigma, sampleNo )
plt.subplot(141)
plt.hist(s, 30, normed=True)

np.random.seed(0)
s = sigma * np.random.randn(sampleNo ) + mu
plt.subplot(142)
plt.hist(s, 30, normed=True)

np.random.seed(0)
s = sigma * np.random.standard_normal(sampleNo ) + mu
plt.subplot(143)
plt.hist(s, 30, normed=True)

# 二維正態分布
mu = np.array([[1, 5]])
Sigma = np.array([[1, 0.5], [1.5, 3]])
R = cholesky(Sigma)
s = np.dot(np.random.randn(sampleNo, 2), R) + mu
plt.subplot(144)
# 注意繪制的是散點圖,而不是直方圖
plt.plot(s[:,0],s[:,1],'+')
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求正態分布的隨機數

比如要生成符合f()分布的隨機數,f的反函數是g,那麼先生成定義域內的均勻分布的隨機數,在帶入g(x)計算就好。

對於你這個問題,python有自帶的方法。
#!/usr/bin/python2.7
import random
random.normalvariate(帶三個參數,你試試)

閱讀全文

與python正態分布相關的資料

熱點內容
阿里雲伺服器遠程異常 瀏覽:288
世界上最大的魔方解壓球 瀏覽:417
書籍編譯器下載 瀏覽:715
rosmoveit編程 瀏覽:198
人人講app怎麼使用 瀏覽:293
android查看文件工具 瀏覽:943
女程序員化妝視頻大全 瀏覽:745
錄音筆如何修改文件夾 瀏覽:645
八爪魚數據採集加密文字替換 瀏覽:84
android系統運行動態編譯的程序 瀏覽:420
計算編程中常用的if語句是 瀏覽:737
linux文件夾許可權亂了 瀏覽:912
程序員職業病預防保健操 瀏覽:681
c程序修改後需不需要重新編譯 瀏覽:726
怎樣把圖片分別放置在文件夾中 瀏覽:873
推流伺服器地址是什麼 瀏覽:633
java允許多重繼承 瀏覽:514
解壓小玩具好玩又可愛 瀏覽:410
騰訊雲大帶寬伺服器 瀏覽:823
加密鎖的售後 瀏覽:270