实验1 离散随机变量的仿真与计算

  • 实验目的

掌握均匀分布的随机变量产生的常用方法。

掌握高斯分布随机变量的仿真,并对其数字特征进行估计。

  • 实验步骤
  1. 实验准备
  1. 安装python环境(3.12.2版本)
  1. 安装第三方库:numpy,用于生成随机数和计算统计量
  1. 编写代码
import numpy as np
import math
def generate_uniform(mean, variance, size=10000):
    """
    生成指定均值和方差的均匀分布随机数
    均匀分布U(a,b)的均值为(a+b)/2,方差为(b-a)²/12
    """
    # 根据均值和方差计算a和b
    a = mean - math.sqrt(3 * variance)
    b = mean + math.sqrt(3 * variance)
    # 生成均匀分布随机数
    uniform_data = np.random.uniform(a, b, size)
    # 理论值
    theoretical = {
        'mean': mean,
        'variance': variance,
        'min': a,
        'max': b
    }
    return uniform_data, theoretical
def generate_gaussian(mean, variance, size=10000):
    """生成指定均值和方差的高斯分布随机数"""
    # 标准差是方差的平方根
    std = math.sqrt(variance)
    # 生成高斯分布随机数
    gaussian_data = np.random.normal(mean, std, size)
    # 理论值(高斯分布没有严格的最大最小值)
    theoretical = {
        'mean': mean,
        'variance': variance,
        'min': None,  # 高斯分布理论上没有最小值
        'max': None   # 高斯分布理论上没有最大值
    }
    return gaussian_data, theoretical
def calculate_statistics(data):
    """计算数据的统计特性"""
    stats = {
        'mean': np.mean(data),
        'variance': np.var(data),
        'min': np.min(data),
        'max': np.max(data)
    }
    return stats
def compare_distributions(mean, variance, size=10000):
    """比较均匀分布和高斯分布的统计特性"""
    print(f"比较均值为{mean},方差为{variance}的随机分布 (样本量: {size})")
    print("=" * 70)
    # 处理均匀分布
    print("\n1. 均匀分布:")
    uniform_data, uniform_theo = generate_uniform(mean, variance, size)
    uniform_stats = calculate_statistics(uniform_data)
    print(f"  理论均值: {uniform_theo['mean']:.6f}, 实际均值: {uniform_stats['mean']:.6f}, "
          f"误差: {abs(uniform_stats['mean'] - uniform_theo['mean']):.6f}")
    print(f"  理论方差: {uniform_theo['variance']:.6f}, 实际方差: {uniform_stats['variance']:.6f}, "
          f"误差: {abs(uniform_stats['variance'] - uniform_theo['variance']):.6f}")
    print(f"  理论最小值: {uniform_theo['min']:.6f}, 实际最小值: {uniform_stats['min']:.6f}")
    print(f"  理论最大值: {uniform_theo['max']:.6f}, 实际最大值: {uniform_stats['max']:.6f}")
    # 处理高斯分布
    print("\n2. 高斯分布:")
    gaussian_data, gaussian_theo = generate_gaussian(mean, variance, size)
    gaussian_stats = calculate_statistics(gaussian_data)
    print(f"  理论均值: {gaussian_theo['mean']:.6f}, 实际均值: {gaussian_stats['mean']:.6f}, "
          f"误差: {abs(gaussian_stats['mean'] - gaussian_theo['mean']):.6f}")
    print(f"  理论方差: {gaussian_theo['variance']:.6f}, 实际方差: {gaussian_stats['variance']:.6f}, "
          f"误差: {abs(gaussian_stats['variance'] - gaussian_theo['variance']):.6f}")
    print(f"  实际最小值: {gaussian_stats['min']:.6f}")
    print(f"  实际最大值: {gaussian_stats['max']:.6f}")
if __name__ == "__main__":
    # 指定的均值和方差
    target_mean = 5.0
    target_variance = 10.0
    sample_size = 500000  # 样本量越大,实际值越接近理论值
    compare_distributions(target_mean, target_variance, sample_size)
  1. 程序运行
  1. 将编写的代码保存为suijibianliang.py档案
  2. 执行运行命令
  1. 结果记录
  1. 等待程序运行搞定,观察终端输出的统计结果

  1. 记录均匀分布的理论值与实际值(均值、方差、最大值和最小值)及误差
  2. 记录高斯分布的理论值与实际值(均值、方差、最大值和最小值)及误差
  3. 修改样本量参数,修改均值参数,修改方差参数,重复运行
  4. 记录实验结果并分析

实验原理

  1. 均匀分布

均匀分布 U (a, b) 是指在区间 [a, b) 内的概率密度为常数的连续概率分布:

概率密度函数:f (x) = 1/(b-a),当 a ≤ x < b

理论均值:μ = (a + b) / 2

理论方差:σ² = (b - a)² / 12

根据给定的目标均值μ和方差σ² ,可以反推出参数:

a = μ - √(3σ²)

b = μ + √(3σ²)

对应代码为:

a = mean - math.sqrt(3 * variance)

b = mean + math.sqrt(3 * variance)

np.random.uniform (a, b, size) 生成 [a, b) 区间内的均匀分布随机数

  1. 高斯分布

高斯分布 N (μ, σ²) 是一种常见的连续概率分布:

概率密度函数:f(x) = (1/√(2πσ²))·exp[-(x-μ)²/(2σ²)]

理论均值:μ

理论方差:σ²

np.random.normal (mean, std, size) 生成指定均值和标准差的正态分布随机数

  1. 统计量计算

对生成的随机数样本,计算以下统计量:

样本均值:x̄ = (1/n)·Σxᵢ

样本方差:s² = (1/n)·Σ(xᵢ - x̄)²

最小值:min(xᵢ)

最大值:max(xᵢ)

  • 实验结果并分析
  1. 样本量大小对实际值与理论值误差的影响

修改样本量参数:sample_size分别为5000、50000、500000

当样本量逐渐增大时,样本的统计量会逐渐趋近于总体的理论值;

样本量越大:实际统计值与理论值的误差越小;样本量越小:随机波动的影响越显著,误差较大

  1. 比较均匀分布和高斯分布的统计特性差异

修改均值参数:target_mean分别为0、10、20

修改方差参数:target_variance分别为1、5、10

均匀分布的均值μ=(a+b)/2,位于区间正中心;方差σ²=(b-a)²/12,仅由区间长度决定

高斯分布的均值μ为分布的中心对称点;方差σ²决定分布的 "胖瘦",值越大离散度越高

  1. 均匀分布的实际最大值和最小值与理论值的接近程度

均匀分布 U (a,b) 的理论最小值为a,理论最大值为b,所有随机数严格落在 [a,b) 区间内;

当样本量较小时,实际最大值可能小于b,实际最小值可能大于a,与理论值有明显差距;当样本量增大时,实际最值会非常接近理论值a和b;当样本量足够大时,实际最值几乎与理论值重合

  1. 分析高斯分布的实际最大值和最小值的变化规律

高斯分布没有严格的理论最值,理论上随机数可取值到 ±∞,但极端值出现的概率极低;

样本量越大,实际最大值可能越大,实际最小值可能越小;标准差σ越大,实际最值的波动范围越广;相同样本量下,多次实验的实际最值会有波动,但整体围绕μ±kσ的范围波动

  • 总结
  1. 随着样本量增加,极端值对整体统计结果的影响会被稀释,样本更能反映总体的真实特性;
  2. 中心聚集的取值分布;就是均匀分布是平等的取值分布,而高斯分布
  3. 均匀分布的随机数在区间内均匀取值,样本量越大,随机数覆盖整个区间的概率越高,因此实际最值会逐渐逼近理论边界a和b;
  4. 高斯分布的取值范围符合“3σ原则”,概率集中在均值附近,极端值罕见,实际最值无固定边界,但随样本量增大呈现可预测的扩展趋势

实验报告要求

(1)编写Matlab或Python程序实现产生指定均值和方差的均匀分布和高斯分布的随机数;

(2)求该随机数的最大值、最小值、均值和方差,并与理论值相比较。

posted on 2025-10-03 09:47  lxjshuju  阅读(16)  评论(0)    收藏  举报