Arduino 中的 random 函数有两种基本形式。 1. `random(max)`:这个形式的函数会返回一个大于等于 0 且小于 `max` 的随机整数。比如说 `random(10)`,它可能返回的值就是 0 到 9 之间的任意一个整数。这里的 `max` 是一个无符号长整型(`unsigned long`)参数,它规定了随机数的上限。从原理上来说,Arduino...
Arduino 中的random()函数基于线性同余生成器(Linear Congruential Generator, LCG)算法。线性同余生成器是一种产生伪随机数的算法,其基本公式为:Xn+1 =(aXn+c)modm 其中:Xn是当前的随机数种子(初始值或上一次生成的随机数)。a是乘数(multiplier)。c是增量(increment)。m是模数(modulus)。Xn+1是下一...
Arduino中的实现。 在Arduino中,`random()` 函数的实现基于一个内部状态变量(可以看作上述公式中的X_n)。每次调用 `random()` 函数时,都会根据这个内部状态变量,按照线性同余法的公式计算出新的随机数,并更新内部状态变量。 例如,Arduino核心代码中对 `random()` 函数的简化示意代码如下(实际代码更为复杂,还涉及...