You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

标准正态分布缩放:调整X轴范围后匹配原分布形态的实现问题

缩放正态分布直方图的解决方案

问题概述

需要将原本X轴范围[-5,5]、步长0.01的标准正态分布密度直方图,修改为X轴范围[-500,500]、步长1,同时保持形态一致,且X=0处的Y值约为0.004。尝试按“X轴放大100倍则Y轴缩小100倍”的方法修改后未达预期,同时疑问缩放后的分布是否仍为正态分布。

原代码

import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns

np.random.seed(2023)
a = np.random.normal(0, 1, 100000)
sns.histplot(a, bins=np.arange(-5, 5, 0.01), stat='density', color='red')
plt.title("Standard Normal Distribution")
plt.xlabel('x')
plt.ylabel('F(x)', rotation=0)
plt.show()

关键逻辑与解决方案

1. 概率密度的缩放规则

当把随机变量X缩放为X' = k*X时,新分布的概率密度函数(PDF)满足:f'(x') = (1/k) * f(x'/k)。这里X轴放大了100倍(k=100),因此:

  • 原标准正态数据需乘以100,得到对应[-500,500]范围的样本
  • 新PDF在x=0处的值为原标准正态PDF值(≈0.3989)除以100,正好≈0.004,符合需求

2. 修改后的可运行代码

import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns

np.random.seed(2023)
# 将原标准正态样本缩放100倍,匹配新X轴范围
scaled_data = np.random.normal(0, 1, 100000) * 100
# 设置新的bins:从-500到500,步长1(结束值设为501才能包含500)
bins = np.arange(-500, 501, 1)
# 用stat='density'自动计算缩放后的密度值
sns.histplot(scaled_data, bins=bins, stat='density', color='red')
plt.title("Scaled Normal Distribution (μ=0, σ=100)")
plt.xlabel('x')
plt.ylabel('F(x)', rotation=0)
plt.show()

3. 关于分布的疑问

缩放后的分布属于正态分布,是均值为0、标准差为100的正态分布,其PDF完全符合正态分布的形式,只是标准差被放大了100倍,因此整体形态和原标准正态分布一致,只是坐标轴缩放了比例。


内容的提问来源于stack exchange,提问作者Laulito

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 16:48:12