富山県で高品質・低価格なホームページ制作はアウェイクコンピューター

MAP

ランダムな文字列

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)を
お外に出してみると無事に連続してパスワード作成できました。

お見積もりのご依頼、制作のご相談など、小さな事でもお気軽にご相談ください。

地元富山のホームページ制作会社ならではの親近感とフットワークの良さにより、高品質かつ安心価格のホームページを心をこめてご提案します。富山県で新規ホームページ制作、ホームページリニューアル、CMS構築はどうぞお気軽にご相談下さい。電話:076-483-9951 (受付時間:平日9時~16時)

お問い合わせフォームはこちら