MATLAB随机数序列:伪随机与真随机,揭开背后的差异
发布时间: 2024-06-14 20:50:45 阅读量: 117 订阅数: 63
伪随机码产生及循环自相关分析MATLAB函数
5星 · 资源好评率100%
![MATLAB随机数序列:伪随机与真随机,揭开背后的差异](https://img-blog.csdnimg.cn/25531280392a4f968181ea8fc7ad6bd1.png)
# 1. MATLAB随机数序列简介**
随机数序列是不可预测的一系列数字,在科学、工程和金融等领域有着广泛的应用。MATLAB提供了丰富的函数来生成伪随机数和真随机数序列,为各种应用提供了灵活性。本章将介绍MATLAB随机数序列的基本概念,包括伪随机数生成器和真随机数生成器。
# 2. 伪随机数生成器**
**2.1 线性同余发生器**
**2.1.1 原理和算法**
线性同余发生器(LCG)是一种广泛使用的伪随机数生成器,其算法如下:
```matlab
x_n = (a * x_(n-1) + c) mod m
```
其中:
* `x_n` 是第 `n` 个随机数
* `x_(n-1)` 是第 `n-1` 个随机数
* `a` 是乘数
* `c` 是增量
* `m` 是模数
LCG 的初始化值 `x_0` 通常是一个随机数或一个预定义的常数。
**2.1.2 优缺点**
LCG 的优点包括:
* 算法简单,计算效率高
* 具有良好的统计特性
LCG 的缺点包括:
* 容易预测:如果已知 `a`、`c`、`m` 和 `x_0`,则可以预测后续的随机数序列
* 存在周期性:LCG 产生的随机数序列在 `m` 个数后会重复
**2.2 乘法同余发生器**
**2.2.1 原理和算法**
乘法同余发生器(MCG)是一种比 LCG 更安全的伪随机数生成器,其算法如下:
```matlab
x_n = (a * x_(n-1)) mod m
```
其中:
* `a` 是乘数
* `x_(n-1)` 是第 `n-1` 个随机数
* `m` 是模数
MCG 的初始化值 `x_0` 通常是一个随机数或一个预定义的常数。
**2.2.2 优缺点**
MCG 的优点包括:
* 比 LCG 更难预测
* 具有良好的统计特性
MCG 的缺点包括:
* 仍然存在周期性
* 计算效率略低于 LCG
**2.3 其他伪随机数生成器**
除了 LCG 和 MCG 之外,还有其他伪随机数生成器,包括:
**2.3.1 斐波那契发生器**
斐波那契发生器产生一个序列,其中每个数字是前两个数字的和。
```matlab
x_n = x_(n-1) + x_(n-2)
```
**2.3.2 梅森旋转发生器**
梅森旋转发生器是一种周期非常长的伪随机数生成器,适合于需要大量随机数的应用。
# 3. 真随机数生成器
真随机数生成器(TRNG)产生不可预测且统计上不可区分于真实随机性的数字序列。与伪随机数生成器不同,TRNG 不依赖于确定性算法,而是利用物理过程或其他不可预测的来源来生成随机性。
### 3.1 物理随机数生成器
物理随机数生成器(PRNG)利用物理现象的固有随机性来生成随机数。这些现象包括:
- **放射性衰变:**放射性元素的原子核衰变是随机的,可用于生成随机比特。
- **热噪声:**电阻器中的电子运动产生随机噪声,可转换为随机数字。
- **光电效应:**光子与半导体材料相互作用产生随机电流,可用于生成随机数。
#### 3.1.1 硬件实现原理
PRNG 通常使用专门的硬件设备来捕获和处理物理现象。这些设备包括:
- **盖革计数器:**检测放射性衰变。
- **噪声二极管:**产生热噪声。
- **光电倍增管:**检测光电效应。
这些设备将物理现象转换为电信号,然后通过模拟或数字电路处理,生成随机比特序列。
#### 3.1.2 优缺点
**优点:**
- **真正的随机性:**PRNG 产生的随机数序列是不可预测且统计上不可区分于真实随机性的。
- **高熵:**物理现象产生高熵的随机性,难以预测或复制。
**缺点:**
- **速度慢:**物理过程固有的随机性限制了 PRNG 的生成速度。
- **成本高:**专门的硬件设备和处理电路会增加成本。
- **环境依赖性:**PRNG 可能受温度、湿度等环境因素的影响。
### 3.2 伪随机数生成器后处理
伪随机数生成器(PRNG)可以经过后处理,以提高其随机性并接近真随机性。这些后处理技术包括:
- **混沌映射:**将 PRNG 输出通过非线性混沌映射,产生更复杂的和不可预测的序列。
- **熵池:**收集来自多个 PRNG 或其他来源的随机性,
0
0