随机数发生器算法

jos*_*osh 0 random algorithm numbers probability prng

银行使用什么算法生成随机数,如(信用卡/借记卡号码)?

假设我维护DB中的所有数字,如果我尝试以下方法,

  1. 生成一个随机数.
  2. 验证是否已分配号码.
  3. 如果是,请转到第1步.
  4. 如果没有在DB中为新数字创建记录并输出结果.

当卡量增加时,它将要求更多的数据库命中.

对此有何看法?请帮忙.

ros*_*sum 5

非重复随机数问题有三种通用解决方案:

  1. 如果你想要一个大范围的几个数字然后选择一个并拒绝它,如果它是重复的.如果范围很大,那么这不会导致重复尝试太多.这就是你在上面提到的.

  2. 如果你想从一个小范围内得到很多数字,那么就列出一个数组中的所有数字并对数组进行洗牌.所述费-耶茨算法是用于阵列改组标准.从洗牌数组中依次取随机数.

  3. 如果你想要大范围的大量数字,那么使用适当大小的加密算法.例如,对于64位数字,使用DES并按顺序加密0,1,2,3 ....... 由于加密是可逆的,因此输出保证唯一.该冬冬布丁密码可以为数字的任何方便的范围内设定.