目前我们在编程中经常会使用随机数,但是其中会不会存在什么问题呢?要知道CPU计算中的各种状态都是确定的,在其中的随机数不是凭空产生的,所以这种随机数真的随机吗?目前生成随机数的方式主要分为以下几种:PS: RDRAND指令产生的随机数目前存在争议,在此不做详细讨论。有兴趣可以参考虽然选择很多,但是目前还是主要采用伪随机数的方式来应对实际开发中需要的场景。用于产生这些看起来随机但实际是由确定性算法生成数字的机制被称为”伪随机数发生器”,简称为PRNG
LCG(linearcongruentialgenerator)线性余额算法是一种古老的随机数的算法。LCG算法是以下递推公式。每个下一个随机数都是当前随机数向左移动log2a位置,加上一个C,最后对m的余额,使得随机数限制在0~m-1内