我有一个代码来生成随机数。
public string Get8Digits()
{
var bytes = new byte[4];
var rng = RandomNumberGenerator.Create();
rng.GetBytes(bytes);
uint random = BitConverter.ToUInt32(bytes, 0) % 100000000;
return String.Format("{0:D8}", random);
}
但我正在寻找一个例程,我会传递用户ID,例程将根据用户ID生成唯一的随机数。在我的情况下,用户ID可能看起来像
a) 1,2,3,100,5000
b) C0001,C0002,C0003,C0010
d) AL62YU,B1N36W,ZU21PQ etc
答案 0 :(得分:1)
可能不是您要找的答案,但您的前提存在缺陷:
假设您想要一个8位数字,您将拥有10^8 = 100'000'000 possible random numbers
。如果您的用户ID只有6个字符,但包含数字和数字,则至少会有36^6 = 2'176'782'336 possible combinations
。
因此,您显然无法为每个用户ID生成唯一随机数 - 至少在没有扩展或更改标识符格式的情况下也是如此。这对你来说是一个可行的选择吗?这个身份证号码还有其他限制吗?