Excel VBA > tips 関数 > ランダム関数を使う
このエントリーをはてなブックマークに追加

ランダム関数を使う

最大値と最小値の場所に注意

特に最小値が「1」の場合は、(紛らわしいので)場所を間違えないように注意しましょう。

Int((最大 – 最小 + 1) * Rnd + 最小)

ランダム関数を使って1~5の値のいずれかを取得
最小値:1
最大値:5

Int((5 – 1 + 1) * Rnd + 1)

ランダム関数を使って5~10の値のいずれかを取得
最小値:5
最大値:10

Int((10 – 5 + 1) * Rnd + 5)

本当にランダムかテストする

実際に「最小値:1」、「最大値3」でランダムに偏りなく、均等に選ばれるかで10万回テストしてみました。

Sub Random関数()

    Dim i As Long

    ‘1~3の回数チェック
    Dim lng1 As Long
    Dim lng2 As Long
    Dim lng3 As Long

    For i = 1 To 100000

        Select Case Int((3 – 1 + 1) * Rnd + 1)
            Case 1: lng1 = lng1 + 1
            Case 2: lng2 = lng2 + 1
            Case 3: lng3 = lng3 + 1
            Case Else: MsgBox “ありえない数値”, vbCritical
        End Select
    Next i

    Debug.Print “1の回数:” & lng1
    Debug.Print “2の回数:” & lng2
    Debug.Print “3の回数:” & lng3

End Sub

結果、こんな感じでした。まずまずといったところでしょうか?
1の回数:33475
2の回数:33174
3の回数:33351

カテゴリ:tips 関数