在 Arduino 中生成随机数
本教程将讨论使用 Arduino 中的 random()
函数生成随机数。
在 Arduino 中使用 random()
函数生成随机数
我们使用随机数生成器在给定的数字范围内生成随机数。例如,我们可以使用它来挑选获胜者作为赠品。
我们可以使用 random()
函数在 Arduino 中生成随机数。
语法:
random(maxVlaue);
random(minValue, maxValue);
在代码的第一行,如果我们只传递范围的最大值,函数将使用零作为最小值。我们还可以使用 random()
函数的第一个和第二个参数来定义最小和最大范围。
范围的最小值是包含的,而最大值是排除的。例如,如果我们定义从 0 到 10 的范围,随机数序列将包含 0 而不是 10。
在使用 random()
函数之前,我们必须使用 randomSeed()
函数对其进行初始化。我们必须在 randomSeed()
函数中传递一个随机数的 long
数据类型来初始化随机数生成器。
假设我们想要随机数与前一个相同的数字序列。我们必须在 randomSeed()
函数中传递相同的数字。
如果我们想要不同的数字序列,则每次初始化随机数生成器时都必须使用不同的数字。在这种情况下,我们可以使用 Arduino 的任何模拟引脚。
当没有输入与模拟引脚连接时,该引脚将具有浮点值或随机值。我们可以使用 analogRead()
函数读取该随机值。
例如,让我们使用 random()
生成 0 到 100 之间的随机数。
long MyRnd;
void setup() {
Serial.begin(9600);
randomSeed(analogRead(0));
}
void loop() {
MyRnd = random(100);
Serial.println(MyRnd);
delay(500);
}
输出:
21
17
20
11
46
51
41
71
2
74
随机数将继续生成,因为我们将随机数生成器放置在 loop()
函数中。如果我们想生成特定次数的随机数,我们可以在 setup()
函数中使用一个循环,它只运行一次。
我们在 random()
函数中定义的范围值可以是 32 位的。如果使用更大的值,函数不会出错,但结果会与预期不同。
如果我们在 randomSeed()
函数中使用像 1
这样的相同数字并重新启动代码,随机数序列将是相同的。