こんにちは、フリーランスエンジニア兼ライターのワキザカ サンシロウです。
皆さんは、VBAで乱数を取得する方法を知っていますか?
Rnd関数・Int関数を使えば、指定した範囲の数値から簡単に乱数を取得することができます。
そこで今回は、
・Rnd関数とは
といった基礎的なことから、
・Int関数を応用した整数の乱数取得方法
・指定した範囲の乱数を取得する方法
といった応用的な方法まで、徹底的に解説します!
Rnd関数とは
Rnd関数を使うと、0以上1未満の乱数を簡単に取得することができます。
サンプルコード:
Sub Test1() MsgBox “Rnd関数の値は” & Rnd & “です。” End Sub
実行結果:
この例では「0.4100367」と表示されている値が乱数なので、処理を実行するごとに値が変わります。
このように、簡単に乱数を取得することができます。
Int関数を使った整数の乱数取得方法
ただ、整数で乱数を取得したいケースもありますよね。
Int関数を使うと、小数以下を丸めて整数のみ取得することができます。
Sub Test2() MsgBox "5.55555をInt関数で変換:" & Int(5.55555) & vbCrLf & _ "-5.55555をInt関数で変換:" & Int(-5.55555) End Sub
実行結果:
Int関数を応用して、Rnd関数とあわせて使うと整数の乱数を取得することができます。
Sub Test3() MsgBox “整数の乱数は” & Int(Rnd * 10) & “です。” End Sub
実行結果:
Rnd関数は0以上1未満なので、10かけた値をInt関数で整数のみにしています。
0 ~ 9の乱数を取得したい場合はこの方法でOKです。
応用編:指定した範囲の整数を取得する方法
0 ~ 9までの乱数取得方法を紹介しましたが、10以上の数を範囲に指定して取得したいときもありますよね。
さらに応用して以下のように書くと、指定した範囲の乱数を取得することができます。
Int((最大値 - 最小値 + 1) * Rnd + 最小値))
Int関数は銀行型の丸め方式で小数以下が切り捨てられてしまうため、最後に最小値を再度たす処理を入れています。
この方法を使えば、以下のように簡単に指定範囲の乱数が取得できます。
サンプルコード:
Sub Test4() Dim intMax As Integer '最大値 Dim intMin As Integer '最小値 intMax = 20 intMin = 0 MsgBox intMin & "~" & intMax & "の乱数は" & _ Int((intMax - intMin + 1) * Rnd + intMin) & "です" End Sub
実行結果:
まとめ
今回は、VBAで指定した範囲の数値を乱数を取得する方法について解説しました。
乱数はExcelでデータ分析をする場合によく使います。
Rnd関数・Int関数を使った乱数取得方法を覚えておけば、応用が利くのでおすすめです。
使い方も簡単なので、ぜひ使ってみてくださいね!