首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C++ Arduino -随机函数不工作

C++ Arduino -随机函数不工作
EN

Stack Overflow用户
提问于 2019-12-22 23:46:51
回答 1查看 386关注 0票数 0

嗨,C++开发人员和StackOverflow用户!

下面的代码是我所做的,但是由于一些原因,随机函数不能工作,或者输出的结果总是相同的值,即'1',我做了什么错误吗?我该如何解决这个问题?

代码语言:javascript
复制
  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()                                                      
{
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-12-23 03:55:55

你得先随机播种。使用randomSeed(seed)

在使用任何PRNG (伪随机数生成器)之前,必须先为生成器添加种子。每次种子应该是不同的,否则你会得到相同的序列一遍又一遍。也就是说,如果您调用randomSeed(2);,然后调用random(),那么每次都会得到相同的编号。对于给定的种子,数字的模式是相同的。正如注释中所提到的,每个程序只运行一次种子。

所以,您每次都要用不同的数字来为PRNG添加种子。从网站中获取,您可以只使用randomSeed( analogRead(pinNum) );,其中pinNum应该是一个未连接的引脚。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59448876

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档