计算机中的随机数
- 我们平时通过摇骰子来扔出点数
- 这个事情是随机的(不考虑作弊)
- 但是作为计算机的大脑,cpu 可不会摇骰子
- 所以它只能通过公式算出来,而且是根据随时在变的时间
- 具有周期性
- 有很多种公式,这里介绍一下线性同余法
线性同余法
- 计算公式是(a+b*r)%c,就是取余数
- a,b,c 都是系数(也称为随机数的种子),r 是上次算出来的随机数
- 我们先把 r 设为 0,a,b,c 分别为 1,2,3
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
---|---|---|---|---|---|---|---|---|---|---|---|
0 | 3 | 2 | 5 | 4 | 7 | 6 | 1 | 0 | 3 | 2 | 5 |
- 容易看出,产生 8 次随机数后,下次产生的也就相同了,这就是所谓周期性
- 所以要看起来更随机的话,随机数的种子要根据时间来变化