)利用混合同余法生成[0, 1]区间上符合均匀分布的随机序列,并计算该 序列的均值和方差,与理论值进行对比分析。要求序列长度为 1200,推荐参数 为a=65539,M=2147483647,0<x0<M。
时间: 2024-10-13 08:04:12 浏览: 123
平稳信号分析及MATLAB实现
利用混合同余法(又称线性同余法)生成均匀分布随机数的基本原理是,通过将当前随机数x乘以一个较大的质数a(这里选择65539),然后对另一个大整数M(如2^31 - 1 = 2147483647)取模,可以保证生成的结果落在[0, M)的范围内,由于取模操作使得结果分布等概率,因此得到的是均匀分布的随机数。
对于序列长度为1200,首先设置初始种子x0(通常小于M),然后采用循环生成序列:
```python
import random
# 定义参数
a = 65539
M = 2147483647
x0 = random.randint(0, M - 1)
seq_length = 1200
# 混合同余法生成随机序列
random_sequence = [((x0 * a + i) % M) / M for i in range(seq_length)]
# 计算均值和方差
mean_theoretical = 1 / 2 # 理论上均匀分布的均值为1/M
variance_theoretical = 1 / (12 * M**2) # 对于长度n的均匀分布序列,方差为1/(12*n)
mean_computed = sum(random_sequence) / seq_length
variance_computed = sum((xi - mean_computed)**2 for xi in random_sequence) / seq_length
print("理论均值:", mean_theoretical)
print("理论方差:", variance_theoretical)
print("实际均值:", mean_computed)
print("实际方差:", variance_computed)
```
对比分析:
- 如果实际均值与理论均值接近,说明随机数序列的平均值符合预期;
- 如果实际方差与理论方差接近,表明序列的波动性与理论一致,即随机性良好。
阅读全文