Arduino 隨機(jī)數(shù)

2018-11-16 15:58 更新

要生成隨機(jī)數(shù),可以使用Arduino隨機(jī)數(shù)函數(shù)。我們有兩個(gè)函數(shù):

  • randomSeed(seed)
  • random()

randomSeed(seed)

randomSeed(seed)函數(shù)重置Arduino的偽隨機(jī)數(shù)生成器。雖然random()返回的數(shù)字的分布本質(zhì)上是隨機(jī)的,但是順序是可預(yù)測(cè)的。你應(yīng)該將發(fā)生器重置為某個(gè)隨機(jī)值。如果你有一個(gè)未連接的模擬引腳,它可能會(huì)從周圍環(huán)境中拾取隨機(jī)噪音。這些可能是無(wú)線電波,宇宙射線,手機(jī)的電磁干擾,熒光燈等。

例子

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

random()

random函數(shù)生成偽隨機(jī)數(shù)。以下是語(yǔ)法。

random()語(yǔ)法

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

例子

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);
}

讓我們現(xiàn)在重溫我們對(duì)一些基本概念的知識(shí),例如位和字節(jié)。

Bit(位)

位只是一個(gè)二進(jìn)制數(shù)字。

  • 二進(jìn)制系統(tǒng)使用兩個(gè)數(shù)字,0和1。

  • 與十進(jìn)制數(shù)字系統(tǒng)類似,數(shù)字的位數(shù)不具有相同的值,位的“意義"取決于其在二進(jìn)制數(shù)中的位置。例如,十進(jìn)制數(shù)666中的數(shù)字相同,但具有不同的值。

Bits

字節(jié)

一個(gè)字節(jié)由8位組成。

  • 如果一個(gè)位是一個(gè)數(shù)字,邏輯上字節(jié)表示數(shù)字。

  • 可以對(duì)它們執(zhí)行所有數(shù)學(xué)運(yùn)算。

  • 一個(gè)字節(jié)中的數(shù)字也不具有相同的意義。

  • 最左邊的位具有被稱為最高有效位(MSB)的最大值。

  • 最右邊的位具有最小值,因此稱為最低有效位(LSB)。

  • 由于可以以256種不同的方式組合一個(gè)字節(jié)的八個(gè)0和1,所以可以由一個(gè)字節(jié)表示的最大十進(jìn)制數(shù)是255(一個(gè)組合表示零)。


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)