• 富山県の地元実績多数のホームページ制作会社・アウェイクコンピューター
  •  お電話:076-483-9951(受付:平日10時~16時)

ランダムな文字列

vb.netでaからzまでを用いたランダムな文字列の作り方をご紹介します。
パスワードなどに利用できます。

このサンプルでは4文字のランダム文字列を作成しています。
ランダムクラスで26までの乱数を発生させ
aからzの文字列より乱数に応じて一文字抜き出す作業を繰り返しています。

Dim password As String = “abcdefghijklmnopqrstuvwxyz”

Function getPassword() As String

Dim r As New System.Random()
Dim pass As String = “”

For i As Integer = 0 To 3

Dim num As Integer = r.Next(26)
pass = pass & password.Substring(num, 1)

Next

Return pass

End Function

例えばボタンをクリックしてgetPasswordクラスを呼び出すのであれば
このコードでも十分なのですが

getPassword() & getPassword() & getPassword()

のように短時間に連続して呼び出す場合は注意が必要です。
全く同じものが帰ってきてしまいます。

msdnの解説を見ると

乱数の生成には、初期値としてシード値を使用します。
同じシードを繰り返し使用すると、生成される乱数系列も同じになります。

とあります。
シード値を設定していないと時刻がシード値に用いられ
連続して生成する場合同じ時刻が用いられてしまうので同じ値になってしまうようです。

1 つの乱数を生成するために繰り返し新しい Random を作成するのではなく
1 つの Random を作成して何回も使用し、多くの乱数を生成するようにします。

とのことなので赤文字のインスタンスの宣言(new as system.random)を
お外に出してみると無事に連続してパスワード作成できました。