Arduino 简明教程

Arduino - Random Numbers

要生成随机数,可以使用 Arduino 随机数函数。我们有两个函数:

  1. randomSeed(seed)

  2. random()

randomSeed (seed)

randomSeed(seed) 函数重置 Arduino 的伪随机数生成器。尽管 random() 返回的数字分布本质上是随机的,但该序列是可预测的。您应该将生成器重置为某个随机值。如果您有未连接的模拟引脚,它可能会从周围环境中拾取随机噪声。这些可能是无线电波、宇宙射线、来自手机、荧光灯等的电磁干扰。

Example

randomSeed(analogRead(5)); // randomize using noise from analog pin 5

random( )

random 函数生成伪随机数。以下是语法。

random( ) Statements Syntax

long random(max) // it generate random numbers from 0 to max
long random(min, max) // it generate random numbers from min to max

Example

long randNumber;

void setup() {
   Serial.begin(9600);
   // if analog input pin 0 is unconnected, random analog
   // noise will cause the call to randomSeed() to generate
   // different seed numbers each time the sketch runs.
   // randomSeed() will then shuffle the random function.
   randomSeed(analogRead(0));
}

void loop() {
   // print a random number from 0 to 299
   Serial.print("random1=");
   randNumber = random(300);
   Serial.println(randNumber); // print a random number from 0to 299
   Serial.print("random2=");
   randNumber = random(10, 20);// print a random number from 10 to 19
   Serial.println (randNumber);
   delay(50);
}

现在,让我们复习一些基本概念,例如位和字节。

Bits

位只是一个二进制数字。

  1. 二进制系统使用两个数字,0 和 1。

  2. 类似于该数字的位数不具有相同值的十进制数系统,位的“意义”取决于它在二进制数中的位置。例如,十进制数 666 中的数字相同,但具有不同的值。

bits

Bytes

字节是由八个位组成的。

  1. 如果一个位是一个数字,那么字节表示数字是合乎逻辑的。

  2. 所有数学运算都可以对其执行。

  3. 字节中的数字也没有相同的意义。

  4. 最左边的位具有称为最高有效位 (MSB) 的最大值。

  5. 最右边的位具有最小值,因此称为最低有效位 (LSB)。

  6. 由于一个字节的八个零和一可以以 256 种不同的方式组合,因此一个字节可以表示的最大十进制数为 255(一个组合表示为零)。