« セルの縦と横の比 | トップページ | VBA サンプル マクロを検索 »

2010年1月13日 (水)

任意の整数から任意の整数までの乱数

乱数を発生させるにはRnd関数を使います。
Rnd関数は0 以上、1 未満の範囲の値を返す。
試しに表示させてみる。

Rnd関数試しコード:

Sub macro100113a()
'乱数を発生させる

    MsgBox Rnd
   
End Sub

結果の例は

Pic20100113a

こんな乱数発生してます。

まず、1から6までの整数乱数を発生させてみる。
Rnd関数が返す乱数は

0 <= Rnd < 1 より
0 * 6 <= Rnd * 6 < 1 * 6
0 <= Rnd * 6 < 6

つまりRnd関数に6をかけると
0以上6より小さい
単精度浮動小数点数型 (Single) を返す。

これを整数型に変換すると

0, 1, 2, 3, 4, 5

のどれかの値を返すことになる。
整数への変換はInt関数を使う

Int(6 * Rnd)

今は、1から6までの整数がほしいから
さらに1を足す。

Int((6 * Rnd) + 1)

これを使ったコードはこちら

1から6までの乱数整数を発生させるコード:

Sub macro100113b()
'1から6までの乱数整数を発生させる

    Dim MyValue As Integer
   
    MyValue = Int((6 * Rnd) + 1)
    MsgBox MyValue
   
End Sub

結果の例は

Pic20100113b

次に
任意の整数から任意の整数までの
乱数整数を発生させる。

これには
上述の1から6までの整数乱数を発生させるために使った

Int((6 * Rnd) + 1)

の6と1の部分を変えるだけ。

例えば、14から23までの整数乱数がほしかったら

Int(((23 - 14) * Rnd) + 14)
Int((9 * Rnd) + 14)

にします。

Function プロシージャを作ってみました。
コードと使用例はこちら

Function プロシージャMyRndと使用例のコード:

Function MyRnd(a As Integer, x As Integer) As Integer
'条件:a < x

    MyRnd = Int(((x - a) * Rnd) + a)
   
End Function
Sub macro100113c()
'MyRnd関数に使用例
'14から23までの整数乱数を返す

    MsgBox MyRnd(14, 23)
   
End Sub

|

« セルの縦と横の比 | トップページ | VBA サンプル マクロを検索 »

コメント

この記事へのコメントは終了しました。

トラックバック


この記事へのトラックバック一覧です: 任意の整数から任意の整数までの乱数:

« セルの縦と横の比 | トップページ | VBA サンプル マクロを検索 »