随机数产生的原理与实现
时间: 2023-06-19 15:10:38 浏览: 212
随机数是指在一定范围内,每个数出现的概率相等的数。产生随机数的原理可以分为两种:
1. 伪随机数生成器(Pseudo-Random Number Generator, PRNG):通过一定的算法和种子(seed)来生成随机数。在给定的种子下,PRNG生成的随机数序列是确定的。常见的PRNG有线性同余发生器(Linear Congruential Generator, LCG)和梅森旋转演算法(Mersenne Twister)等。
2. 真随机数生成器(True Random Number Generator, TRNG):利用物理现象来产生随机数,例如电子噪声、放射性衰变、光电效应等。TRNG在理论上能够产生真正的随机数序列,但实现难度较大,而且需要专门的硬件支持。
以下是一个简单的PRNG的实现,使用的是LCG算法:
```python
class LCG:
def __init__(self, seed):
self.a = 1664525
self.c = 1013904223
self.m = 2**32
self.seed = seed
def random(self):
self.seed = (self.a * self.seed + self.c) % self.m
return self.seed / self.m
```
在上面的代码中,a、c、m分别是LCG算法的参数,seed是初始种子。每次调用`random()`方法都会根据公式`(a * seed + c) % m`来更新种子,并返回一个[0, 1)之间的随机数。
阅读全文