乱数発生(Rnd)
乱数を発生させる関数です。Rnd関数は0から1未満の範囲で任意の数値を返します。ランダムと言えど計算式から導かれる数値です。開始の数値が同じであれば、乱数の発生する順番は同じになってしまいます。そのためRandomizeステートメントがあります。実行毎に最初に書いておくと、開始数値が初期化され、出現する値に規則性のない乱数を作成してくれるようになります。
[リスト3]1から10の乱数を作成する
Randomize '(1)
a=Int(Rnd * 10) +1 '(2)
(1)で乱数を初期化します。(2)は1から10までの乱数を変数aにいれています。Rnd関数は0から1未満の小数点付きの数値を返してくれるものでした。今回は整数値がほしいので、小数点以下はいりません。Int関数で整数化しています。Rnd*10で0から10未満の数値を発生させ、Int()で整数化します。乱数は10未満の数値なので、整数の0から9までの数値が設定されます。ほしいのは1から10までの数値なので、プラス1して0から9を1から10に変更しています。 開始数値と終了数値を任意に決めて、乱数を作成したい場合、以下のリストの式がよく使用されます。
[リスト4]rei_Rnd (数値関数例題.xlsm)
Sub rei_Rnd()
maxD = 10
minD = 1
Randomize
a = Int(Rnd * (maxD - minD + 1)) + minD '(1)
MsgBox ("maxD=" & maxD & " minD=" & minD & " Rnd=" & a)
End Sub
変数maxDにほしい数値の最大値、変数minDにほしい数値の最小値をセットし、(1)の式で変数aに乱数を設定します。サイコロを振ったり、占いをしたりなどの任意に数値を出して処理をしたいときにはとても重宝する関数です。
図5 Rnd関数例を実行 |
平方根(Sqr)
平方根を計算する関数です。数値4は2X2で計算できます。数値4の平方根は2です。同じ数を2乗して出た答えから、何を掛け合わせたかを導きだします。xxx ㎡(平方メートル)の土地の面積と言われたとき、平方根を出して、yy m(メートル)の正方形と考えたほうがイメージしやすかったりします。正しく平方根が求められているか確認してみましょう。
[リスト5]rei_Sqr (数値関数例題.xlsm)
Sub rei_Sqr()
a = 4 '(1)
b = Sqr(a) '(2)
MsgBox (a & "の平方根は" & b)
a = 5
b = Sqr(a) '(3)
MsgBox (a & "の平方根は" & b)
MsgBox (b & " X " & b & " = " & b * b) '(4)
End Sub
(1)で変数aに4を入れ平方根を変数bに入れています。ちゃんと2が表示されます。(3)で変数aに5を入れて平方根を計算してみました。小数点付きの答えが返ってきました。確認のため答えを2乗してみるとちゃんと5になっています。図6で表示を図示しました。
図6:Sqr関数 |
絶対値(Abs)
絶対値を求める関数です。絶対値とは、指定した数値から負の符号(-、マイナス)を取り除いたものです。数値5の絶対値は5、数値-5の絶対値は5です。身近なもので、どんな時使うのでしょうか?
例題を考えてみましょう。簡単な問題ですが、A地点からB地点まで、1000mあるとします。花子さんは健康のため、A地点からB地点まで往復のジョギングを毎日1回行うことにしました。10日間続けると何mジョギングしたことになるでしょうか?。
「A地点からB地点が1000mなら往復2000mだ」と頭の中ではすぐわかります。計算式にしてみましょう
[リスト6]rei_Abs (数値関数例題.xlsm)
Sub rei_Abs()
a = 0 '(1)
b = 1000 '(2)
iki = b - a
kaeri = Abs(a - b) '(3)
hi = iki + kaeri '(4)
MsgBox ("1日 " & hi & "m 10日で " & hi * 10 & "m")
End Sub
A地点0m、B地点1000mとして、行きと帰りの距離を計算します。行きは「1000-0」で良いのですが、戻りは「0-1000」となり、-1000mとなります。マイナスがついていても1000mジョギングしたのには変わりありません。足し合わせるために絶対値を使います(3)。(4)で足し合わせて1日のジョギング距離を求めることができます。少し強引だったかもしれませんが、上記のような使い方もできます。
図7:Abs関数 |