VB6・VBA関数メモ:Randomizeステートメント

Randomizeステートメントについてメモしておきます。

このステートメントは、Rnd関数で使用される乱数のシード値を生成します。
Randomizeステートメントを使用しないと毎回同じ乱数を取得するようになってしまうため、
Rnd関数とセットで使用するものと覚えておきましょう。

ただし、シード値を固定値にしてしまうと結局同じ乱数のパターンしか取得しないため、
基本的には引数を省略したりTimer()の値を指定したりします。

しかし、Timer()だと全く異なる日の同じ時間に実行した場合に
同じパターンの乱数が取れてしまう可能性が考えられるので注意です。


概要

Randomize [Number]
機能 Rnd関数で使用される乱数のシード値を設定
引数 Number (省略可)
任意の数値
省略時はTimer()の戻り値
Variant型


使用例

説明 記述例 出力
乱数のシード値を変更
Randomize
Debug.Print Rnd
0.9097864
乱数のシード値を明示的に変更
Randomize 123
Debug.Print Rnd
0.7972899


動作検証

説明 記述例 出力
Rnd関数にマイナス値を指定後、
Randomizeステートメントに同一値を指定すると
毎回同じ値を取得する
Rnd -1
Randomize 123
Debug.Print Rnd
Debug.Print Rnd
Debug.Print Rnd

Debug.Print ""

Rnd -1
Randomize 123
Debug.Print Rnd
Debug.Print Rnd
Debug.Print Rnd

Debug.Print ""

Rnd -1
Randomize 123
Debug.Print Rnd
Debug.Print Rnd
Debug.Print Rnd
0.7972899
2.077007E-02
0.7047607

0.7972899
2.077007E-02
0.7047607

0.7972899
2.077007E-02
0.7047607
負の値を指定可能
Randomize -123
Debug.Print Rnd
0.2972899
小数を指定可能
Randomize 1.23
Debug.Print Rnd
0.9824248
小数点以下が異なる値を指定しても
異なるシード値となる
Randomize 1.24
Debug.Print Rnd
0.7433196
文字列の数値を指定可能
Randomize "100"
Debug.Print Rnd
0.2193938
文字列の数値(16進数)を指定可能
Randomize "&H64"
Debug.Print Rnd
0.2193938
文字列の数値(8進数)を指定可能
Randomize "&O144"
Debug.Print Rnd
0.2193938
文字列の数(指数表記)を指定可能
Randomize "1E+2"
Debug.Print Rnd
0.2193938
Nullを指定するとエラー
Randomize Null
Debug.Print Rnd
エラー
Double型の最小値(-1.79769313486231E308)を
下回るとエラー
Randomize "-1.79769313486231E309"
Debug.Print Rnd
エラー
Double型の最大値(1.79769313486232E307)を
上回るとエラー
Randomize "1.79769313486232E308"
Debug.Print Rnd
エラー
Date型の指定も可能
(しかしString型の場合はエラー)
Randomize #2011/12/13#
Debug.Print Rnd
0.4777251
Randomize "2011/12/13"
Debug.Print Rnd
エラー


コメント
コメントする








    
この記事のトラックバックURL
トラックバック