アクセス上位ページ
 
最近の更新内容
(6)-c.Abs関数 ⇐ [PREV]
[NEXT] ⇒ (6)-e.Sqr関数

Excel VBA ≫ 2.関数リファレンス - 数学関連(6)-d.Rnd関数

Rnd関数

Rnd関数は単精度浮動小数点数型 (Single) で0以上1未満の乱数を返します。
  • 【構文】
    Rnd (Number)

      【戻り値】 単精度浮動小数点型 (Single)

  • 引数名 省略 説明
    Number 省略可能な引数です。 省略しない場合は単精度浮動小数点数型 (Single) の数値または任意の有効な数式を指定します。


    引数 Number と戻り値の関係
    Number の値 戻り値
    < 0 常に、引数 Number のシード値によって決まる同じ数値を返します。
    > 0 乱数系列の次の乱数を返します。
    0 直前に生成した乱数を返します。
    省略したとき 乱数系列の次の乱数を返します。




  • Rnd関数の使用例1
  • 毎回同じ乱数を発生させる例です。
    最初にRnd関数の引数にマイナスのシード値を指定することで決まった値を発生させます。 その後、Rnd 関数を引数なしで呼び出して同じ乱数系列を再現しています。
    Sub sample_ef064_01()
        Dim i       As Integer
    
        '再現したい乱数系列のシード値(任意)をマイナスで指定
        Rnd (-2.5)
    
        '乱数を5回発生
        For i = 1 To 5
            Debug.Print "i=" & i & ":" & Rnd
        Next i
    End Sub
    
    ⇒ サンプルマクロ集 へ


    <実行結果(イミディエイトウィンドウ)>
    ※シード値が同じであれば何回実行しても結果は同じになります。
    i=1:0.7874333
    i=2:0.3604596
    i=3:0.3178332
    i=4:0.1038546
    i=5:0.7088641
    


  • Rnd関数の使用例2
  • 毎回異なる乱数を発生させる例です。
    Randomize ステートメントを引数なしで呼び出すことで、システムタイマーをもとにしたシード値を乱数ジェネレータに設定します。 その後 Rnd 関数を呼び出すことで毎回異なる乱数を発生させることができます。
    Randomize ステートメントを呼び出して乱数のシード値を変更しないと、エクセル再起動後の結果が同じになってしまいますので注意してください。
    Sub sample_ef064_02()
    'サイコロの試行にみたてて1〜6の乱数を発生させ、
    'その回数をカウントします。
    
        '数値型の変数はゼロで初期化されます。
        Dim cnt(1 To 6) As Long
        Dim i       As Long
        Dim num     As Integer
    
        '乱数ジェネレータの初期化
        Randomize
    
        For i = 1 To 1000
            '1〜6までの乱数を発生
            num = Int(6 * Rnd + 1)
            '出た目のカウントを加算
            cnt(num) = cnt(num) + 1
        Next i
    
        'それぞれの出た回数を表示
        For i = 1 To 6
            Debug.Print i & "の目:" & cnt(i) & "回"
        Next i
    End Sub
    
    ⇒ サンプルマクロ集 へ

    <実行結果(イミディエイトウィンドウ)>
    ※エクセルを起動しなおしても異なる結果が得られます。
    (偶然一致してしまう可能性はもちろんありますが・・・)
    1の目:164回
    2の目:167回
    3の目:148回
    4の目:165回
    5の目:187回
    6の目:169回
    
カテゴリ内ページ
Excel VBA 〜 総目次 〜
- 2.関数リファレンス
-- (6).数学関連
--- (6)-a.Int、Fix関数
--- (6)-b.Round関数
--- (6)-c.Abs関数
--- (6)-d.Rnd関数
--- (6)-e.Sqr関数
--- (6)-f.Sin、Cos、Tan関数



Page
Top