つらつら Excel VBA

私の備忘録です。

乱数と確率

エクセルの乱数は疑似乱数。

セルに以下の数式を入れると出る。

=RAND() '0~1の間で乱数を生成




以下、VBA用。シード値については触れません。

Sub Test1()
    Randomize '乱数ジェネレータを初期化
    Debug.Print Rnd '0~1の間で乱数を生成
End Sub


整数用の乱数生成サンプル。

Function 範囲乱数(iLow As Long, iHigh As Long, Optional init As Boolean = False) As Long
    
    If init Then Randomize
    
    Dim iTmp As Long
    iTmp = Int((iHigh - iLow + 1) * Rnd + iLow)
    
    範囲乱数 = iTmp
    
End Function

'整数%
Function 確率(iRate As Integer, Optional init As Boolean = False) As Boolean
    
    Dim iTmp As Long
    iTmp = 範囲乱数(0, 99, init)
    
    If iRate > iTmp Then
        確率 = True
    Else
        確率 = False
    End If
    
End Function


以下確認用。

Sub 確認用()
    
    Columns("A:B").ClearContents
    
    Randomize
    
    Dim i As Long
    For i = 1 To 100000
        Cells(i, 1) = 範囲乱数(1, 6)
        Cells(i, 2) = 確率(1)
    Next
    
End Sub


以上。