日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

python生成具有上下限的截斷對數正態分布

系統 2704 0

目標:用python生成一組具有上下限的對數正態分布隨機數。

思路:利用python的scipy.stats生成截斷正態分布,再將正態分布轉化為對數正態分布。

要求:生成的目標對數正態分布隨機數要介于區間[log_lower,log_upper]內,這里設定該區間為[5, 10],并繪制正態分布與對數正態分布隨機數的直方圖。

源代碼:

            
              import numpy as np
from pylab import *
from scipy import stats
import matplotlib
import matplotlib.pyplot as plt
# 設置matplotlib正常顯示中文和負號
matplotlib.rcParams['font.sans-serif'] = ['SimHei']  # 用黑體顯示中文
matplotlib.rcParams['axes.unicode_minus'] = False  # 正常顯示負號

# region 【功能函數】生成截斷對數正態分布,要求對數正態在[log_lower,log_upper]
def get_trunc_lognorm(mu, sigma, log_lower, log_upper=np.inf, data_num=10000):
    norm_lower = np.log(log_lower)
    norm_upper = np.log(log_upper)
    X = stats.truncnorm((norm_lower - mu) / sigma, (norm_upper - mu) / sigma, loc=mu, scale=sigma)
    norm_data = X.rvs(data_num)
    log_data = np.exp(norm_data)
    return norm_data, log_data
# endregion

mu, sigma = 0, 1
norm_data, log_data = get_trunc_lognorm(mu, sigma, 5, 10)

figure(4)
subplot(2, 1, 1)
plt.hist(norm_data, normed=1, bins=30)
plt.xticks(np.arange(mu - 5 * sigma, mu + 5 * sigma, 0.5))
plt.title("中間過程的截斷正態分布")

subplot(2, 1, 2)
plt.hist(log_data, normed=1, bins=30)
plt.xticks(np.arange(0, 50, 5))
# plt.xlim(0,50)
plt.title("所求的截斷對數正態分布")
plt.show()
            
          

執行結果:

python生成具有上下限的截斷對數正態分布_第1張圖片


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 高平市| 杭锦后旗| 安远县| 泗阳县| 富平县| 师宗县| 密云县| 馆陶县| 迁安市| 洞口县| 西丰县| 乌兰县| 吴江市| 临潭县| 丰镇市| 鹤峰县| 墨玉县| 福州市| 兴宁市| 西贡区| 定兴县| 大安市| 晋城| 门头沟区| 崇文区| 伊金霍洛旗| 阿克陶县| 凤翔县| 榆林市| 广南县| 昆明市| 上饶县| 咸丰县| 阿尔山市| 商河县| 吉木萨尔县| 金阳县| 宁海县| 邢台县| 大田县| 安顺市|