単精度小数点型の乱数を返す(Rnd関数)
 サイコロを振ったときのように、1〜6までの値のうち、任意のどれかを取得したい
といった場合には、Rnd関数を利用します。

 Rnd関数は、単精度浮動小数点型の乱数を返します。値の範囲は0以上1未満に
なります。引数numberでは、どのような乱数を返すかを指定します。設定する値は
次の一覧のようになります。


・引数numberで指定する値と戻り値の関係
number        戻り値
0未満         引数numberのシード値によって決まる同じ数値を返す
0より大きい   乱数系列の次の乱数を返す(既定値)
0             直前に生成した乱数と同じ乱数を返す


 乱数が作成される際には、まず、乱数系列(あるいは乱数ジェネレーター)と
呼ばれる、乱数のセットが作成されて、そこから順にRnd関数の戻り値として
返されます。つまり、同じ乱数系列を使用すると、まったく同じ乱数が作成
されることになります。引数numberに0未満の数値を指定した場合には、その
値で求められる乱数系列を参照して乱数が返されるため、いつも同じ値が同じ
順番で返されることになります。

 いつも違う乱数系列を使用して乱数を発生させるには、Randmizeステートメント
を使って、乱数系列を初期化する必要があります。


  構文 Rnd(Number)

 設定項目        内容
  Number          乱数を作成する方法を指定 [省略可能]


 次のサンプルは、1から100の中からランダムに値を10個抽出するコードに
なります。


●サンプル●

Sub RndSamp1()

    Dim i As Integer
    Dim myStr(9) As String
    '---変数系列を初期化を変更
    Randomize
    For i = 0 To 9
        '---(1)1から10までの乱数
        myStr(i) = Int((100 - 1 + 1) * Rnd() + 1)
    Next i
    MsgBox Join(myStr, vbCr)

End Sub

 Randomizeステートメントは、このサンプルのように、Rand関数よりも前で
一回だけ使用するようにしてください。

●ポイント●

 Rnd関数で返される値を、ある任意の範囲内の数値にしたい場合には、(1)
のステートメントのように、

「Int(最大値 - 最小値 +1 ) * Rnd + 最小値」

という数式を用います。

Excel2000



戻る


Excel Word Access VBA! モーグ