从给定的随机数组值生成随机数 Arduino程序C++

Generate random numbers from given random array values Arduino program C++

本文关键字:随机数 Arduino 程序 C++ 随机 数组      更新时间:2023-10-16

我正在尝试从我创建的数组中的给定值为 LED 生成随机输出,但它不起作用,我在网上找到了这个,他们说像下面这样做,但它什么也没做。程序应该从数组中获取一个随机值。

int randomArray[4] = { 0,85,170,255 };


void setup() {
Serial.begin(9600);
pinMode(red, OUTPUT);
pinMode(green, OUTPUT);
pinMode(blue, OUTPUT);
pinMode(RLed, OUTPUT);
pinMode(YLed, OUTPUT);
pinMode(GLed, OUTPUT);
randomSeed(millis());
}
void loop() {
redvalue = randomArray[random(0,3)];
bluevalue = randomArray[random(0, 3)];
greenvalue = randomArray[random(0, 3)];
Serial.println(redvalue);
Serial.println(bluevalue);
Serial.println(greenvalue);
analogWrite(red, redvalue);
analogWrite(blue, bluevalue);
analogWrite(green , greenvalue);
analogWrite(RLed, redvalue);
analogWrite(YLed, bluevalue);
analogWrite(GLed, greenvalue);
delay(1000);
}

如果你想要数组的随机元素,你必须使用随机索引。

如果您的数组中有 4 个值,索引必须在区间 [0-3] 内。

来自Arduino参考:

随机(最大(

随机(最小值、最大值(

参数 min:随机值的下限,包含(可选(。 max:随机值的上限,独占。

返回介于 min 和 max-1 之间的随机数。数据类型:长整型。

int randomArray[4] = {0, 85, 170, 255};
int randIndex = (int)random(0, 4);
int randElem = randomArray[randIndex];

应该可以解决问题,但我的C++有点生疏。 您可能可以省略 int 强制转换。