関数・メソッド

範囲を指定して乱数を発生させる【Rnd関数/Int関数】【ExcelVBA】

構文

Rnd(Number)  As Single

Number・・・・通常は省略で使用します。
戻り値 ・・・・・Single型 0~1の間の浮動小数点で返ります
0 以上 1 未満の乱数を返します。
Randomizeと併用して使用する事で、シード値が変更となりランダムな値を習得します。

Rnd関数のサンプルコード

Public Sub sample_rnd()

    '■使用前にRandmizeで乱数系列のシード値を変更させる(初期化)
    Randomize
    
    '■0~1未満の小数点がランダムに戻ってくる
    Debug.Print Rnd()   '0.4150355
    Debug.Print Rnd()   '0.1599039
    Debug.Print Rnd()   '0.4977473

    '■ランダムな整数値を取得する場合はInt関数を併用する(下記例は1~6の範囲で取得)
    Debug.Print Int(6 * Rnd + 1)    '1
    Debug.Print Int(6 * Rnd + 1)    '5
    Debug.Print Int(6 * Rnd + 1)    '2

    '1~6を乱数で求める式は以下
    '↓Int((最大値-最小値+ 1 )* Rnd +最小値))
    '↓Int((  6  -   1  + 1 )* Rnd + 1    ))
    '↓Int((  6         )* Rnd + 1    ))

    '■ランダムで整数値以外を使用する場合は以下。
    Dim num As Long
    num = Int(3 * Rnd + 1)  '1
    
    Select Case num
        Case 1
            Debug.Print "大吉"
        Case 2
            Debug.Print "中吉"
        Case 3
            Debug.Print "小吉"
    End Select
    

End Sub

 

注意点

  • Rnd関数を使用前にRandmizeで乱数を初期化しましょう。
    しないと保存してブック閉じる→再度開くと前回と同じ値を取得してしまいます。

関連記事

現年齢を算出する処理をパーツ化する【int関数応用】【ExcelVBA】

コメント

タイトルとURLをコピーしました