C ++ Arduino-随机函数不起作用

时间:2019-12-22 23:46:51

标签: c++ random arduino

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()                                                      
{
}

1 个答案:

答案 0 :(得分:2)

您需要先随机植入种子。使用runAllManagedModulesForAllRequests

在使用任何PRNG(伪随机数生成器)之前,必须播种生成器。种子每次都应该不同,否则您将一遍又一遍地获得相同的序列。也就是说,如果先呼叫randomSeed(seed)然后再呼叫randomSeed(2);,则每次都会获得相同顺序的相同数字。对于给定的种子,数字的模式相同。如评论中所述,每个程序仅种子一次

因此,您每次都想给PRNG注入不同的编号。取自website,您可以只使用random(),其中pinNum应该是未连接的引脚。