簡體   English   中英

C++ Arduino - 隨機函數不起作用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM