[VB.NETで半角英字をランダムに発生させるには?]


3~4文字の空いている.comドメインをVisualBasic2008Expressでプログラムして、Whoisサイトで探そうと思います。

順ぐりに探すのではなく、ランダムな英字を投げようと思うのですが、半角英字をランダムに生成する方法がわかりません。

どのようなコードを書けばよろしいでしょうか? よろしくお願い申し上げます。

(なお、「そんなことするとWhoisサイトにブロックされるよ」というご意見もあるかと思いますが、サイトに文字列を投げる間隔も十分に空け、ランダム性のある間隔にすれば大丈夫かと思うのですが、いかがでしょう)

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2010/03/04 19:30:33
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:bmax No.1

回答回数67ベストアンサー獲得回数16

ポイント60pt

下記のコードで生成できます。


使い方の例:Dim result as string = CreateRandomString(4)

で4桁のランダムな半角英数字がresultに入ります。



        ''' <summary>
        ''' ランダムな文字列の生成
        ''' </summary>
        ''' <param name="length">文字数</param>
        ''' <returns>ランダムな文字列("0" To "9", "A" To "Z", "a" To "z")</returns>
        Private Shared Function CreateRandomString(ByVal length As Integer) As String

            CreateRandomString = ""

            '指定の文字数になるまでランダムな文字を生成
            Dim strKey As String = ""
            Do Until Len(strKey) >= length
                'ランダムな文字を生成
                Dim strKeyChar As String = Chr(RollDice(122 - 47) + 47)
                '数字・英字の範囲かチェック
                Select Case strKeyChar
                    Case "0" To "9", "A" To "Z", "a" To "z"
                        'Case "0" To "9"
                        strKey = strKey & strKeyChar
                End Select
            Loop

            CreateRandomString = strKey

        End Function


        ''' <summary>
        ''' 暗号サービス プロバイダの暗号乱数ジェネレータを使っての乱数の生成(MSのヘルプから引用)
        ''' </summary>
        ''' <param name="NumSides">出力値の最大値</param>
        ''' <returns>乱数(1~指定した最大値)</returns>
        Private Shared Function RollDice(ByVal NumSides As Integer) As Integer

            Dim randomNumber(0) As Byte

            Dim Gen As RNGCryptoServiceProvider = New Global.System.Security.Cryptography.RNGCryptoServiceProvider()

            Gen.GetBytes(randomNumber)

            Dim rand As Integer = Convert.ToInt32(randomNumber(0))

            Return rand Mod NumSides + 1
        End Function
id:vb-net

ありがとうございます。助かりました!

2010/03/04 19:30:25

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません