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

生成3组各1000点2D正态分布后如何验证均值近似构成等边三角形

问题排查

你之前的两次实现都不符合要求,核心问题如下:

  • 第一次实现:生成的dist1/dist2/dist3均为1维数组,和题目要求的2D正态分布不符;仅通过直方图和垂直均值线只能展示1维数据的分布情况,无法在平面上呈现三角形。
  • 第二次实现:重新生成的D1/D2/D3仍为1维正态分布,将三个1维均值强行拼接为平面点坐标的逻辑没有实际意义,得到的三角形和2D分布的均值无关联。
正确实现思路

1. 生成符合要求的2D正态分布

2D正态分布的均值是长度为2的向量(对应平面x/y轴坐标),协方差矩阵为2×2结构(控制分布的离散程度和维度相关性)。你可以先预设三个刚好构成等边三角形的均值点,再基于这三个均值生成带噪声的样本,每组1000个点。

2. 计算三组样本的实测均值

分别对三组2D样本的x、y维度求平均,得到三个实测均值点,这三个点就是三角形的三个顶点。

3. 可视化与数值验证

首先绘制三组样本的散点图确认分布重叠情况,再标记三个实测均值点,两两连线闭合得到三角形;最后计算三个点的两两距离,验证三个距离近似相等即可确认是近似等边三角形,注意要把坐标轴设为等比例,避免视觉变形导致判断误差。

参考实现代码
import numpy as np
import matplotlib.pyplot as plt

# 预设三个构成等边三角形的理论均值,两两距离为2
mean1 = np.array([0, 0])
mean2 = np.array([2, 0])
mean3 = np.array([1, np.sqrt(3)])

# 设置三组的协方差矩阵,调整分布重叠程度
cov1 = np.array([[0.3, 0], [0, 0.3]])
cov2 = np.array([[0.4, 0], [0, 0.4]])
cov3 = np.array([[0.3, 0], [0, 0.3]])

# 各生成1000个2D正态分布样本
dist1 = np.random.multivariate_normal(mean1, cov1, 1000)
dist2 = np.random.multivariate_normal(mean2, cov2, 1000)
dist3 = np.random.multivariate_normal(mean3, cov3, 1000)

# 计算三组样本的实测均值
calc_mean1 = dist1.mean(axis=0)
calc_mean2 = dist2.mean(axis=0)
calc_mean3 = dist3.mean(axis=0)

# 可视化
plt.scatter(dist1[:,0], dist1[:,1], alpha=0.3, label='第1组样本')
plt.scatter(dist2[:,0], dist2[:,1], alpha=0.3, label='第2组样本')
plt.scatter(dist3[:,0], dist3[:,1], alpha=0.3, label='第3组样本')

# 拼接均值点,闭合三角形
mean_points = np.array([calc_mean1, calc_mean2, calc_mean3, calc_mean1])
plt.scatter(mean_points[:-1, 0], mean_points[:-1, 1], c='red', s=100, marker='*', label='实测均值')
plt.plot(mean_points[:, 0], mean_points[:, 1], c='black', linewidth=2, linestyle='--')

# 数值验证等边
d12 = np.linalg.norm(calc_mean1 - calc_mean2)
d23 = np.linalg.norm(calc_mean2 - calc_mean3)
d31 = np.linalg.norm(calc_mean3 - calc_mean1)
print(f"三个均值两两距离:{d12:.2f}, {d23:.2f}, {d31:.2f}")
print(f"距离最大相对误差:{(max(d12,d23,d31)-min(d12,d23,d31))/min(d12,d23,d31)*100:.1f}%,误差<5%即可认为是近似等边三角形")

plt.legend()
plt.axis('equal') # 等比例坐标轴,避免视觉变形
plt.show()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 05:15:02