在 Arduino 中生成随机数

Ammar Ali 2023年10月12日
在 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 这样的相同数字并重新启动代码,随机数序列将是相同的。

作者: Ammar Ali
Ammar Ali avatar Ammar Ali avatar

Hello! I am Ammar Ali, a programmer here to learn from experience, people, and docs, and create interesting and useful programming content. I mostly create content about Python, Matlab, and Microcontrollers like Arduino and PIC.

LinkedIn Facebook

相关文章 - Arduino Function