Rnd 関数

Rnd(number)

乱数を返します。

引数

number
省略可能です。
任意の有効な数式を指定します。

解説

Rnd 関数は 0 以上、1 未満の範囲の値を返します。

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

初期シード値が変わらない限り、一連の Rnd 関数が返す乱数系列は同じになります。これは、連続する Rnd 関数が乱数系列の中の直前の乱数をシード値として、次の乱数をそれぞれ生成するためです。

システム タイマーから取得した新しいシード値を使用して乱数ジェネレータを初期化するには、Rnd 関数を呼び出す前に、引数を指定せずに Randomize ステートメントを実行してください。

使用例

任意の範囲の整数の乱数を生成するには、次の式を使用してください。
この式では、引数 intUpper には範囲の上限の値を指定し、引数 intLower には範囲の下限の値を指定します。

Dim intValue, intUpper, intLower
intUpper = 10
intLower = 1
'intValue には 1 ~ 10 の乱数が入ります。
intValue = Int((intUpper - intLower + 1) * Rnd + intLower)
              

メモ

乱数系列を繰り返すには、数値を指定して Randomize ステートメントを実行する直前に、負の引数を指定して Rnd 関数を呼び出します。引数 number に同じ値を指定して Randomize ステートメントを使用しても、前の乱数系列を繰り返すことはできません。
次のコードは、Randomize ステートメントの使用例です。

Dim MyValue, Response
Randomize    '乱数ジェネレータを初期化します。
Do Until Response = vbNo
   MyValue = Int((6 * Rnd) + 1)    '1 ~ 6 のランダムな値を生成します。
   MsgBox MyValue
   Response = MsgBox ("繰り返しますか ? ", vbYesNo)
Loop
              

  • 最速攻略VBScriptサンプル大全集

    好評の「最速攻略 VBScript サンプル大全集」の改訂版です。これまでのWindows2000/XPに加え、Windows Vista、最新のWindows 7環境にも対応しています。Windows上での処理の自動化や一括処理(バッチ処理)をテーマとしたVBScriptのサンプルスクリプト集です。付属 CD-ROMには、すぐに使うことができる100以上のサンプルスクリプトを用意しています。

  • VBScriptポケットリファレンス改訂版

    WebでもWindowsでも使えるVBScriptだから手元においてさっと引けるこの一冊!VBScript5.6に対応!待望の改訂版!目的別リファレンスでやりたいことから調べられます。すべての項目にサンプルコード掲載!WSH、ASP、IEすべての環境でお役に立ちます。

  • Excel VBAポケットリファレンス改訂第3版

    好評のExcel VBAポケットリファレンスが改訂第3版としてリニューアルしました。知りたいコマンドがすぐ調べられる機能引きリファレンスはそのままに、最新の Excel 2010に完全対応。もちろん、これまでのExcel 97、2000、2002、2003、2007のすべてのバージョンに対応しています。「こんなときどうするの?」「どう書けばいいの?」という疑問がすぐ解決する、全てのExcel VBAユーザー必携の、最強のリファレンスブックです!

  • Access VBA逆引きハンドブック

    本書はAccess VBAの各機能を、豊富なプログラミング例を使って、初心者にもわかりやすく、かつ網羅的に解説しています。また、やりたいことを目的別に簡単に探せる「逆引き」の構成になっています。

このページの先頭へ