好吧这可能是一个数学问题,但由于它与编程和我的网络应用程序有关,我先问这里:
我正在尝试创建长度为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有多少种可能的组合?如果你也可以发布方程式,感激不尽:)
由于
答案 0 :(得分: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
因为您可能会得到一个1.0
与.nextDouble()
的精确匹配,这意味着您将以等于长度的索引访问该数组,并且您将获得IndexOutOfRangeException。