0

これはおそらく数学の質問ですが、プログラミングと私の Web アプリケーションに関連しているため、最初にここで質問します。

長さ 8 文字の短い ID を作成しようとしています。ID を取得する「プール」は、数字と大文字と小文字の組み合わせです。

string charPool = "ABCDEFGOPQRSTUVWXY1234567890ZabcdefghijklmHIJKLMNnopqrstuvwxyz"

そして、興味がある場合は、次の方法があります。

private string GenerateRandomCode(int length)
{
    string charPool = "ABCDEFGOPQRSTUVWXY1234567890ZabcdefghijklmHIJKLMNnopqrstuvwxyz";
    StringBuilder rs = new StringBuilder();

    for (int i = 0; i < length; i++)
    {
        rs.Append(charPool[(int)(_random.NextDouble() * charPool.Length)]);
    }

    return rs.ToString();
}

8文字のIDの可能な組み合わせはいくつありますか? 方程式も投稿していただけるとありがたいです:)

ありがとう

4

1 に答える 1

2

options per slot ^ number of slots = number of combinations

az は 26 で、2 (アッパーも同様) を掛けると 52、プラス 10 (0-9) は 62 です。各 ID の長さは 8 文字なので、結果は 62^8 となり、かなり大きくなります。

218,340,105,584,896 possible unique ID's

私はすることをお勧めします:

_random.Next(charPool.Length - 1)

(およびループ外の変数に保存charPool.Length - 1する)、代わりに:

_random.NextDouble() * charPool.Length

これは、長さと等しいインデックスで配列にアクセスすることになり、IndexOutOfRangeException が発生することを意味します1.0.nextDouble()

于 2012-06-02T03:35:20.527 に答える