Excel VBA:乱数の生成|範囲指定しRAND関数で発生させる

RAND関数を使い、指定した範囲の乱数を生成するVBAを掲載しています。



Homeに戻る > Excel 数値・文字列・検索・印刷のTipsへ


VBAで乱数を発生させるにはRAND関数を使います。

そしてRAND関数の使用前に、Randomizeステートメントで初期化します。


Randomizeの構文

乱数ジェネレータを初期化します。

Randomize [number]


RAND関数の構文

0以上1未満の乱数を発生します。

Rnd [num]

引数numに指定するシード値により、生成される乱数は次のように決まります。

引数numの値 戻り値
負の数値 numのシード値によって決まる同じ数値を常に返します。
正の数値 乱数系列から次の乱数を返します。
0 直前に生成した乱数と同じ値を返します。
省略した場合 乱数系列から次の乱数を返します。

ここでは、0か1(裏か表)、1~6(サイコロ)、1~10、1~100の範囲を指定した乱数を発生させています。

例えば1~6(サイコロ)の乱数の場合、Int((Rnd * 6) + 1の式になります。

INT関数で整数にし、0の場合があるので+1しています。


関連する記事として「RANDBETWEEN 指定した範囲の整数の乱数を発生させるExcel関数」を掲載していますので参照してください。



RAND関数を使い、指定した範囲の乱数を生成するVBA

VBAの解説

■ コマンドボタンクリックイベント

■ ExRandomizeプロシージャ

  1. Randomizeステートメントで初期化します。
  2. Forループで10回乱数を発生させます。
  3. 5列目に0か1の乱数を表示します。
  4. 6列目に1~6の乱数を表示します。
  5. 7列目に1~10の乱数を表示します。
  6. 8列目に1~100の乱数を表示します。

Excel VBAシートコード

Option Explicit

'Excel VBAで乱数の生成
Private Sub ExRandomize()
    Dim i As Integer
    
    '乱数の初期化
    Randomize
        
    For i = 1 To 10
        '裏(0)か表(1)かの乱数
        Cells(i, 5) = Int(Rnd * 2)
        'サイコロ(1~6)の乱数
        Cells(i, 6) = Int((Rnd * 6) + 1)
        '1~10の乱数
        Cells(i, 7) = Int((Rnd * 10) + 1)
        '1~100の乱数
        Cells(i, 8) = Int((Rnd * 100) + 1)
    Next
End Sub

Private Sub CommandButton1_Click()
    '乱数の生成
    ExRandomize
End Sub



Excel VBA 実行結果

E列が0か1、F列が1~6、G列が1~10、H列が1~100の範囲の乱数になっています。



Homeに戻る > Excel 数値・文字列・検索・印刷のTipsへ

■■■
このサイトの内容を利用して発生した、いかなる問題にも一切責任は負いませんのでご了承下さい
■■■
当ホームページに掲載されているあらゆる内容の無許可転載・転用を禁止します


Copyright (c) Excel-Excel ! All rights reserved