■random関数
random関数は疑似乱数を生成します。完全にランダムな数字が必要な場合は、random関数を実行する前に空きアナログポートをanalogRead関数で読み込んだ値の様な、真にランダムな値を用いて、randomSeed関数を実行します。
■使用例
Arduino IDEで使用するrandom関数の使い方は以下の通りです。試しにこのプログラムを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:プログラム例
■「random(min,max)」の構文
min : 生成する乱数の下限。省略可能
max : 生成する乱数の上限
戻り値:minからmax-1の間の整数 (long)
励みになりますのでよければクリック下さい(^o^)/