我想根据客户端ID生成最多50个唯一的字母数字字符串。顺便说一句,获得相同字符串的机会是什么?我有多个客户,我不希望字符串重叠。
这是我打算使用的:
static Random _Random = new Random();
static char[] _AllowedChars =
Enumerable.Range(48, 10).Select(x => (char)x)
.Concat(Enumerable.Range(65, 26).Select(x => (char)x))
.Concat(Enumerable.Range(97, 26).Select(x => (char)x))
.ToArray();
static string PseudoUniqueString(int maxLength = 50)
=> new string(Enumerable.Range(1, Math.Max(1, maxLength))
.Select(x => _AllowedChars[_Random.Next(_AllowedChars.Length)])
.ToArray());
是否可以在此字符串的开头添加客户端ID(例如1)?我没有提出其他解决方案。需要建议。
修改: 该字符串将在Web API中用作交易号,并且将有1个以上的客户端。这就是为什么我要在此字符串中添加客户端ID。
答案 0 :(得分:0)
出于您的目的(即生成交易号),您应该create an identifier包含一个较长的随机数(例如GUID或使用RNGCryptoServiceProvider
类生成的128位或更长的随机数—不是System.Random
)。在以下情况之一中,它将被视为唯一: