Arduino-乱数
乱数を生成するには、Arduino乱数関数を使用できます。2つの機能があります-
- randomSeed(seed)
- random()
randomSeed(シード)
関数randomSeed(seed)は、Arduinoの疑似乱数ジェネレーターをリセットします。random()によって返される数値の分布は本質的にランダムですが、シーケンスは予測可能です。ジェネレータをランダムな値にリセットする必要があります。アナログピンが接続されていない場合、周囲の環境からランダムなノイズを拾う可能性があります。これらは、電波、宇宙線、携帯電話からの電磁干渉、蛍光灯などである可能性があります。
例
randomSeed(analogRead(5)); // randomize using noise from analog pin 5
random()
ランダム関数は、疑似乱数を生成します。構文は次のとおりです。
random()ステートメントの構文
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);
}
ここで、ビットやバイトなどのいくつかの基本的な概念に関する知識を更新しましょう。
ビット
ビットは単なる2進数です。
バイナリシステムは、0と1の2桁を使用します。
数値の桁が同じ値を持たない10進数システムと同様に、ビットの「重要度」は2進数内の位置に依存します。たとえば、10進数666の数字は同じですが、値が異なります。
バイト
1バイトは8ビットで構成されます。
ビットが数字の場合、バイトが数字を表すのは論理的です。
すべての数学演算はそれらに対して実行できます。
バイト内の数字も同じ意味を持ちません。
左端のビットには、最上位ビット(MSB)と呼ばれる最大値があります。
右端のビットは最小値であるため、最下位ビット(LSB)と呼ばれます。
8つの0と1バイトの1は256の異なる方法で組み合わせることができるため、1バイトで表すことができる最大の10進数は255です(1つの組み合わせはゼロを表します)。