NOBのArduino日記!

NOBのArduino日記!

趣味は車・バイク・自転車・ラジコン・電子工作です。

Arduino IDE(randomSeed関数の使い方)

randomSeed関数
 randomSeed関数は乱数を生成する関数(random関数)を初期化します。  完全にランダムな数字が必要な場合は、random関数を実行する前に空きアナログポートをanalogRead関数で読み込んだ値の様な、真にランダムな値を用いて、randomSeed関数を実行します。
 Arduino IDEで使用するrandomSeed関数の使い方は以下の通りです。
 試しにこのプログラムをArduino UNOで実行すると、13ピンのLEDが1秒未満の周期で完全に不規則な間隔で点滅します。
 ※以下プログラム中からrandomSeed(analogRead(0))の一文を抜いてもLEDは一見ランダムに点滅しますが、Arduinoを再起動すると、再起動前と同一な周期でLEDが点滅します。この為random関数は疑似乱数と言われています。
void setup() {                //一回だけ実行する
  pinMode(13, OUTPUT);        //LEDを接続した13番ピンを出力用に設定する
}
void loop() {                 //{}内を無限ループで実行する
  randomSeed(analogRead(0));  // 未接続ピンのノイズを利用
  int i = random (1000);      //iに0~999の整数で生成した乱数を代入する。
  digitalWrite(13, HIGH);     //LEDが接続された13番ピンをHIGH(5V)にする
  delay(i);                   //iミリ秒LEDを点灯した状態で止める
  digitalWrite(13, LOW);      //LEDが接続された13番ピンをLOW(0V)にする
  delay(1000 - i);            //1000-iミリ秒LEDを消灯した状態で止める
}
イメージ 1
図1:プログラム例
 
randomSeed(seed)のパラメータ
Seed    :乱数列の生成する開始点を指定出来ます(変数の型はlongです)
 
イメージ 1 イメージ 3
励みになりますのでよければクリック下さい(^o^)/

↩【ArduinoIDE reference】目次に戻る