Arduino - 随机数
要生成随机数,你可以使用 Arduino 随机数函数。我们有两个函数 -
randomSeed(seed)
random()
randomSeed(seed)
函数 randomSeed(seed)
重置 Arduino 的伪随机数生成器。尽管 random()
返回的数字的分布基本上是随机的,但序列是可预测的。你应该将生成器重置为某个随机值。如果你有一个未连接的模拟引脚,它可能会从周围环境中拾取随机噪声。这些可能是无线电波,宇宙射线,手机的电磁干扰,荧光灯等。
例
randomSeed(analogRead(5)); // randomize using noise from analog pin 5
random()
随机函数生成伪随机数。以下是语法。
random()
语句语法
long random(max) // it generate random numbers from 0 to max
long random(min, max) // it generate random numbers from min to max
例
long randNumber;
void setup() {
Serial.begin(9600);
// if analog input pin 0 is unconnected, random analog
// noise will cause the call to randomSeed() to generate
// different seed numbers each time the sketch runs.
// randomSeed() will then shuffle the random function.
randomSeed(analogRead(0));
}
void loop() {
// print a random number from 0 to 299
Serial.print("random1=");
randNumber = random(300);
Serial.println(randNumber); // print a random number from 0to 299
Serial.print("random2=");
randNumber = random(10, 20);// print a random number from 10 to 19
Serial.println (randNumber);
delay(50);
}
现在让我们刷新一些基本概念的知识,比如位和字节。
位
它只是一个二进制数字。
-
二进制系统使用两个数字,0 和 1。
-
类似于十进制数系统,其中数字的数字不具有相同的值,位的“重要性”取决于它在二进制数中的位置。例如,十进制数 666 中的数字相同,但具有不同的值。
字节
一个字节由 8 位组成。
-
如果位是一位数,则字节表示数字是合乎逻辑的。
-
可以对它们执行所有数学运算。
-
字节中的数字也不具有相同的含义。
-
最左边的位具有最大值,称为最高有效位(MSB)。
-
最右边的位具有最小值,因此称为最低有效位(LSB)。
-
由于 8 个
0
和1
可以以 256 种不同的方式组合,因此可以用一个字节表示的最大十进制数是 255。