随机数

randomSeed()

randomSeed(seed)
描述:
使用randomSeed()初始化伪随机数生成器,使生成器在随机序列中的任意点开始。这个序列,虽然很长,并且是随机的,但始终是同一序列。
如需要在一个random()序列上生成真正意义的随机数,在执行其子序列时使用randomSeed()函数预设一个绝对的随机输入,例如在一个断开引脚上的analogRead()函数的返回值。
反之,有些时候伪随机数的精确重复也是有用的。这可以在一个随机系列开始前,通过调用一个使用固定数值的randomSeed()函数来完成。
参数:
long,int: 通过数字生成种子。
返回值:

例子:

long randNumber;
 
void setup(){
  Serial.begin(9600);
  randomSeed(analogRead(0));
}
 
void loop(){
  randNumber = random(300);
  Serial.println(randNumber);
 
  delay(50);
}

random()

描述:
使用random()函数将生成伪随机数。
语法:

random(max) 
random(min, max) 

参数:
min:随机数的最小值,随机数将包含此值。 (此参数可选)
max:随机数的最大值,随机数不包含此值。
返回值:
min和max-1之间的随机数( 数据类型为long )

注意:
如需要在一个random()序列上生成真正意义的随机数,在执行其子序列时使用randomSeed()函数预设一个绝对的随机输入,例如在一个断开引脚上的analogRead()函数的返回值。 反之,有些时候伪随机数的精确重复也是有用的。这可以在一个随机系列开始前,通过调用一个使用固定数值的randomSeed()函数来完成。

例子:

long randNumber;
 
void setup(){
  Serial.begin(9600);
 
//如果模拟输入引脚0为断开,随机的模拟噪声
//将会调用randomSeed()函数在每次代码运行时生成
//不同的种子数值。
//randomSeed()将随机打乱random函数。
  randomSeed(analogRead(0));
}
 
void loop() {
//打印一个0到299之间的随机数
  randNumber = random(300);
  Serial.println(randNumber);  
 
//打印一个10到19之间的随机数
  randNumber = random(10, 20);
  Serial.println(randNumber);
 
  delay(50);
}