0

我有一个 Arduino 草图,我打算用它来控制 8 个 LED 以不同的速率闪烁或消失。我想为我的输出引脚设置一个 1-8random 的随机数,为循环内的值设置一个 30-300 的随机数,以及用于控制淡入或淡出速度的delay()第三个随机数。+=X我还想建立一个随机数来指示灯是闪烁还是消失(布尔随机数在这里可以工作......)。

这就是我模糊的地方。从文档中,我了解到该randomSeed()函数将 drive random(x,y),但似乎推断出random(x,y)我定义的所有值都将在同一个草图中使用相同的种子。

似乎没有办法定义种子 A 驱动随机 A 和种子 B 驱动随机 B。我读对了吗?我找不到任何可以做我想做的事情的样本。

伪代码如下:

void setup() {
    pinMode(12, OUTPUT);
    pinMode(11, OUTPUT);
    pinMode(10, OUTPUT);
    pinMode(9, OUTPUT);
    pinMode(8, OUTPUT);
    pinMode(7, OUTPUT);
    pinMode(6, OUTPUT);
    pinMode(5, OUTPUT);
    pinMode(4, OUTPUT);
}

void loop() {
#
#  How can I assocaiate pinSeed with pin, delaySeed with delay and velSeed with velocity?
#
    int pinSeed = RandomSeed(analogRead(0));
    int pin = Random1(4,13);
    int delaySeed = RandomSeed(analogRead(0));
    int delay = Random(30,200);
    int velSeed = RandomSeed(analogRead(0);
    int velocity = Random(1,21);
    for (i=0;i=255;+=velocity) {
        analogWrite(pin,i);
        delay(velocity);
    }
}
4

1 回答 1

2

种子值设置一系列随机(实际上是伪随机)数字的起点。设置种子后,您可以绘制随机数,不要重置或重新定义种子以获得第二个随机数。通常,种子只需要在程序中生成一次。

能够设置种子允许您在代码的第二次、第三次等执行时重新创建随机数序列。这有助于调试!

此外,返回的每个随机数都可以归一化为不同的值范围,如 1-8 或 30-300,当随机数时,布尔值可以定义为 < 5 (false) 或 >= 5 (true) number 标准化为 1 到 10(例如)。

希望这可以帮助。

于 2013-08-09T04:53:51.367 回答