Arduinoのサンプルプログラム

Arduino-Random Numbers関数(乱数関数)の使い方

当記事では、ArduinoのRandom Numbers関数(乱数関数)の使い方について詳しく解説します。

Random Numbers関数を使うことによって、乱数列を作成して乱数を取得することができます。

randomSeed()/乱数の種を指定


void setup() {
  Serial.begin(9600);//シリアル通信を9600bpsで初期化
  randomSeed(100);//乱数の種となる数値を100に指定
}

void loop() {
  long RandomNumber;//「RandomNumber」をdoubleで変数宣言

  RandomNumber = random(300);//乱数の最大値を300に指定
  Serial.println(RandomNumber);//乱数を送信、改行

  delay(1000);//1秒待機(1000msec待機)
}

randomSeed()は疑似乱数ジェネレータを初期化して、乱数の種を指定します。 random()と組み合わせることで、乱数を取得することができます。

サンプルプログラムでは、乱数の種を300に指定して乱数列が作成され、シリアルモニタに乱数が表示されていきます。なお、乱数の種が同じ値であれば同じ乱数列が作成されるので、同じような乱数を取得してしまう可能性があります。


void setup() {
  Serial.begin(9600);//シリアル通信を9600bpsで初期化
  randomSeed(analogRead(0));//乱数の種となる数値を未接続のアナログ入力0番ピンに指定
}

void loop() {
  long RandomNumber;//「RandomNumber」をdoubleで変数宣言

  RandomNumber = random(300);//乱数の最大値を300に指定
  Serial.println(RandomNumber);//乱数を送信、改行

  delay(1000);//1秒待機(1000msec待機)
}

乱数の種となる数値を未接続のアナログ入力ピンに指定することで、完全にランダムなノイズからの値となるため、毎回、異なる乱数列を作成することができます。

サンプルプログラムでは、乱数の種となる数値を未接続のアナログ入力0番ピンにして、シリアルモニタに乱数を表示させました。

Arduinoボードのリセットボタンでプログラムをリセットすることにより、2つの乱数列(シリアルモニタ パターン1とパターン2)からそれぞれ乱数を取得してみました。

random()/乱数を取得


void setup() {
  Serial.begin(9600);//シリアル通信を9600bpsで初期化
  randomSeed(100);//乱数の種となる数値を100に指定
}

void loop() {
  long RandomNumber;//「RandomNumber」をdoubleで変数宣言

  RandomNumber = random(200, 300);//乱数の最小値を200、最大値を300に指定
  Serial.println(RandomNumber);//乱数を送信、改行

  delay(1000);//1秒待機(1000msec待機)
}

random()は、randomSeed()で乱数の種を指定した後に、乱数を取得することができます。

すでに「randomSeed()/乱数の種を指定」のサンプルプログラムでも出てきましたが、random()は乱数の最大値のみを指定する他に、乱数の最小値と最大値を指定することもできます。

サンプルプログラムでは、random()乱数の最小値を200、最大値を300に指定しているので、シリアルモニタには200~300の乱数が表示されます。

テキストのコピーはできません。