用混合线性同余法以及推荐参数数据生成10000个伪随机数,用直方图显示这些随机数的分布。
时间: 2024-10-17 16:06:02 浏览: 73
混合线性同余法(Combined Linear Congruential Generator, CLCG)是一种常用的伪随机数生成算法,它结合了两个或多个人工合成的线性同余发生器。下面是一个简单的步骤来用Python实现这一过程,并生成10000个伪随机数,然后用matplotlib库绘制直方图:
首先,你需要安装`numpy`和`matplotlib`库,如果尚未安装,可以使用以下命令:
```bash
pip install numpy matplotlib
```
接下来,我们可以编写Python代码:
```python
import numpy as np
import matplotlib.pyplot as plt
# 混合线性同余生成器的参数
a1 = 16807
c1 = 0
m1 = 2**31
b1 = 0x5DEECE66DL # 这里是第二个同余发生器的参数
def mixed_lcg(a1, c1, m1):
x = a1
while True:
yield x
x = (a1 * x + c1) % m1
# 生成10000个伪随机数
random_generator1 = mixed_lcg(a1, c1, m1)
pseudo_random_numbers = [next(random_generator1) for _ in range(10000)]
# 第二个同余发生器(用于增加多样性)
a2 = 48271
c2 = 0
m2 = 2**31
b2 = 0x9D2C5680L
random_generator2 = mixed_lcg(a2, c2, m2)
pseudo_random_numbers.extend([next(random_generator2) for _ in range(10000)])
# 绘制直方图
plt.hist(pseudo_random_numbers, bins='auto', alpha=0.5)
plt.title('Pseudo Random Numbers Distribution')
plt.xlabel('Random Value')
plt.ylabel('Frequency')
plt.show()
```
这段代码首先创建了两个混合线性同余生成器,然后分别从每个生成器获取10000个随机数,并将它们合并到一起。最后,使用matplotlib的`hist`函数绘制直方图,展示随机数的分布情况。
阅读全文