Arduino - 随机数
要生成随机数,您可以使用 Arduino 随机数函数。我们有两个函数 −
- randomSeed(seed)
- random()
randomSeed (seed)
函数 randomSeed(seed) 重置 Arduino 的伪随机数生成器。尽管 random() 返回的数字分布本质上是随机的,但序列是可预测的。您应该将生成器重置为某个随机值。如果您有一个未连接的模拟引脚,它可能会从周围环境中拾取随机噪声。这些可能是无线电波、宇宙射线、手机的电磁干扰、荧光灯等。
示例
randomSeed(analogRead(5)); // 使用来自模拟引脚 5 的噪声进行随机化
random( )
随机函数生成伪随机数。以下是语法。
random( ) 语句语法
long random(max) // 它生成从 0 到最大值的随机数 long random(min, max) // 它生成从最小值到最大值的随机数
示例
long randNumber; void setup() { Serial.begin(9600); // 如果模拟输入引脚 0 未连接,随机模拟 // 噪声将导致对 randomSeed() 的调用在每次运行草图时生成 // 不同的种子数。 // randomSeed() 然后将打乱随机函数。 randomSeed(analogRead(0)); } void loop() { // 打印一个从 0 到 299 的随机数 Serial.print("random1="); randNumber = random(300); Serial.println(randNumber); // 打印一个从 0 到 299 的随机数 Serial.print("random2="); randNumber = random(10, 20);// 打印一个从 10 到 19 的随机数 Serial.println (randNumber); delay(50); }
现在让我们重新认识一些基本概念,例如位和字节。
位
一位只是一个二进制数字。
二进制系统使用两个数字,0 和 1。
与十进制数字系统类似,其中数字的数字不具有相同的值,位的"重要性"取决于其在二进制数中的位置。例如,十进制数 666 中的数字相同,但值不同。
字节
一个字节由 8 位组成。
如果一位是数字,那么字节代表数字是合乎逻辑的。
可以对它们执行所有数学运算。
字节中的数字也不具有相同的意义。
最左边的位具有最大值,称为最高有效位 (MSB)。
最右边的位具有最小值,因此称为最低有效位 (LSB)。
由于八个零和一个一字节可以有 256 种不同的组合方式,因此一个字节可以表示的最大十进制数是 255(一种组合代表一个零)。