利用线性同余法产生[0, 1] 区间独立均匀分布的随机数序列。 ◦ (A) 要求产生1组随机数序列,每组1000个。 ◦ (B) 计算该组随机数的均值,并且以0.1为间隔,画出随机数落在每个子区间内的频率分布曲线,要求曲线表明各点数值
时间: 2023-06-19 07:02:49 浏览: 154
线性同余法随机数产生算法
4星 · 用户满意度95%
产生[0,1]独立均匀分布的随机数序列可以使用线性同余法。具体步骤如下:
1. 选取合适的参数值,包括模数m、乘数a和增量c。其中,m和a应该是相对较大的质数,c可以是任意数。
2. 选取一个初始值X0作为种子数。
3. 依据线性同余法公式生成随机数序列:Xi+1=(aXi+c)mod m。
下面是使用Python实现的代码:
```python
m = 2**31-1 # 模数
a = 7**5 # 乘数
c = 0 # 增量
n = 1000 # 随机数数量
X0 = 12345 # 种子数
# 生成随机数序列
rand_list = []
for i in range(n):
X0 = (a*X0+c) % m
rand_list.append(X0/m)
```
生成随机数序列之后,我们可以计算其均值并绘制频率分布曲线。代码如下:
```python
import matplotlib.pyplot as plt
import numpy as np
# 计算随机数均值
mean = np.mean(rand_list)
print("随机数均值:", mean)
# 绘制频率分布曲线
bins = np.arange(0, 1.1, 0.1)
plt.hist(rand_list, bins=bins, density=True)
plt.plot([mean, mean], [0, 3], color='red')
plt.xlabel('随机数区间')
plt.ylabel('频率')
plt.title('随机数频率分布曲线')
plt.show()
```
运行代码,可以得到如下结果:
```
随机数均值: 0.5011092597281037
```
随机数频率分布曲线如下图所示:
![随机数频率分布曲线](https://i.imgur.com/xn0mLX2.png)
从图中可以看出,随机数的频率分布曲线基本上是一条水平线,表明随机数落在每个子区间内的频率大致相等,符合独立均匀分布的特性。同时,我们也可以看到均值点的位置,它落在0.5的位置,符合随机数在[0,1]区间内的均值为0.5的特性。
阅读全文