0

我有一个生成随机数的代码。

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
4

1 回答 1

1

可能不是您要寻找的答案,但您的前提存在缺陷:

假设您想要一个 8 位数字,您将拥有10^8 = 100'000'000 possible random numbers. 如果您有一个只有 6 个字符但包括数字和数字的用户 ID,您将至少有36^6 = 2'176'782'336 possible combinations.

因此,您显然无法为每个用户 ID 生成唯一的随机数 - 至少在不扩展或更改标识符格式的情况下不能。这对你来说是一个可行的选择吗?这个身份证号码还有其他限制吗?

于 2013-04-09T14:22:58.120 回答