在 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