vb.netでaからzまでを用いたランダムな文字列の作り方をご紹介します。
パスワードなどに利用できます。
このサンプルでは4文字のランダム文字列を作成しています。
ランダムクラスで26までの乱数を発生させ
aからzの文字列より乱数に応じて一文字抜き出す作業を繰り返しています。
Dim password As String = “abcdefghijklmnopqrstuvwxyz”
Function getPassword() As String Dim r As New System.Random() For i As Integer = 0 To 3 Dim num As Integer = r.Next(26) Next Return pass End Function |
例えばボタンをクリックしてgetPasswordクラスを呼び出すのであれば
このコードでも十分なのですが
getPassword() & getPassword() & getPassword()
のように短時間に連続して呼び出す場合は注意が必要です。
全く同じものが帰ってきてしまいます。
msdnの解説を見ると
乱数の生成には、初期値としてシード値を使用します。 同じシードを繰り返し使用すると、生成される乱数系列も同じになります。 |
とあります。
シード値を設定していないと時刻がシード値に用いられ
連続して生成する場合同じ時刻が用いられてしまうので同じ値になってしまうようです。
1 つの乱数を生成するために繰り返し新しい Random を作成するのではなく 1 つの Random を作成して何回も使用し、多くの乱数を生成するようにします。 |
とのことなので赤文字のインスタンスの宣言(new as system.random)を
お外に出してみると無事に連続してパスワード作成できました。