在 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
這樣的相同數字並重新啟動程式碼,隨機數序列將是相同的。