[英]C++ Arduino - Random Function doesn't work
嗨 C++ 開發者和 StackOverflow 用戶!
下面的代碼是我所做的,但由於某種原因,隨機函數不起作用,或者結果的輸出總是相同的值,即“1”,我做錯了什么嗎? 我應該如何解決這個問題?
void setup()
{
int randNumber;
int i;
randNumber = random(2);
Serial.println(randNumber);
pinMode(PIEZO, OUTPUT);
delay(3000);
if (randNumber == 0)
{
for (i = 0; i < 105; i++)
{
tone(PIEZO, notes[i], time[i]);
delay(time[i]);
}
}
else if (randNumber == 1)
for (i = 0; i < 116; i++)
{
tone(PIEZO, Snowman_Notes[i], Snowman_Rhythm[i]);
delay(Snowman_Rhythm[i]);
}
}
void loop()
{
}
您需要先隨機播種。 使用randomSeed(seed)
。
在使用任何 PRNG(偽隨機數生成器)之前,您必須為生成器設置種子。 種子每次都應該不同,否則你會一遍又一遍地得到相同的序列。 也就是說,如果你調用randomSeed(2);
然后調用random()
,您每次都會以相同的順序獲得相同的數字。 給定種子的數字模式是相同的。 如評論中所述,每個程序僅種子一次
因此,您每次都希望用不同的數字為 PRNG 設置種子。 取自網站,您可以使用randomSeed( analogRead(pinNum) );
,其中 pinNum 應該是未連接的引腳。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.