Algorithm 随机数发生器算法

Algorithm 随机数发生器算法,algorithm,random,numbers,probability,prng,Algorithm,Random,Numbers,Probability,Prng,银行使用什么算法生成随机数,如(信用卡/借记卡号码) 假设我将所有数字都保存在DB中,如果我尝试以下方法 生成一个随机数 验证是否已分配号码 如果是,转到步骤1 如果没有,则在DB中为新编号创建一条记录并输出结果 当卡容量增加时,它将要求更多的db点击 还有其他的看法吗??请帮忙。您有什么要求?我想你需要生成唯一的随机数 在您的情况下,步骤2可能需要很长时间,具体取决于条目的数量 使用任何散列算法(如SHA1或MD5)获得良好的伪随机数 这里也有一种罕见的可能性,两个条目可以有相同的随机数 要使

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

假设我将所有数字都保存在DB中,如果我尝试以下方法

  • 生成一个随机数
  • 验证是否已分配号码
  • 如果是,转到步骤1
  • 如果没有,则在DB中为新编号创建一条记录并输出结果
  • 当卡容量增加时,它将要求更多的db点击


    还有其他的看法吗??请帮忙。

    您有什么要求?我想你需要生成唯一的随机数

    在您的情况下,步骤2可能需要很长时间,具体取决于条目的数量

    使用任何散列算法(如SHA1或MD5)获得良好的伪随机数

    这里也有一种罕见的可能性,两个条目可以有相同的随机数

    要使其完全唯一,您可以将随机数与条目的唯一id合并


    例如,您有100个具有唯一ID 1到100的条目。要获得第100个条目的唯一随机数,请生成一个随机数,比如1129642347,并将其与唯一id 100合并。作为一种简单的方法,可以使用串联。然后随机数变成1129642347100

    您需要什么?我想你需要生成唯一的随机数

    在您的情况下,步骤2可能需要很长时间,具体取决于条目的数量

    使用任何散列算法(如SHA1或MD5)获得良好的伪随机数

    这里也有一种罕见的可能性,两个条目可以有相同的随机数

    要使其完全唯一,您可以将随机数与条目的唯一id合并


    例如,您有100个具有唯一ID 1到100的条目。要获得第100个条目的唯一随机数,请生成一个随机数,比如1129642347,并将其与唯一id 100合并。作为一种简单的方法,可以使用串联。然后随机数变为1129642347100,这里有一个点。信用卡号码并不是随机的,它们只是对信用卡有效的号码。
    卡中的数字(3或4位的安全代码)应该是随机数。

    LukeH在这里有一点。信用卡号码并不是随机的,它们只是对信用卡有效的号码。
    卡中的数字(具有3或4位数字的安全码数字)应为随机数。

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

  • 如果你想要一个大范围内的几个数字,那么选择一个,如果是重复的,就拒绝它。如果范围较大,则不会导致太多重复尝试。这就是你上面提到的

  • 如果你想从一个小范围内得到很多数字,那么把所有的数字放在一个数组中,然后把数组洗牌。这是阵列洗牌的标准。从无序数组中按顺序获取随机数

  • 如果您需要大范围的大量数字,请使用适当大小的加密算法。例如,对于64位数字,使用DES并加密0、1、2、3。。。按顺序。由于加密是可逆的,因此保证输出是唯一的。可以为任何方便的数字范围设置


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

  • 如果你想要一个大范围内的几个数字,那么选择一个,如果是重复的,就拒绝它。如果范围较大,则不会导致太多重复尝试。这就是你上面提到的

  • 如果你想从一个小范围内得到很多数字,那么把所有的数字放在一个数组中,然后把数组洗牌。这是阵列洗牌的标准。从无序数组中按顺序获取随机数

  • 如果您需要大范围的大量数字,请使用适当大小的加密算法。例如,对于64位数字,使用DES并加密0、1、2、3。。。按顺序。由于加密是可逆的,因此保证输出是唯一的。可以为任何方便的数字范围设置


  • 是什么让你认为信用卡和借记卡号码是随机的?这与你的问题无关,但信用卡号码不是随机的。看到了吗,信用卡是顺序的?虚拟账号呢?信用卡和银行号码根本不是随机的。是什么让你认为信用卡和借记卡号码是随机的?这与你的问题无关,但信用卡号码不是随机的。看到了吗,信用卡是顺序的?虚拟帐号呢?信用卡和银行号码根本不是随机的。它们不是完全随机的,但银行决定的部分可能是随机的——如何分配它们取决于他们。它们当然不是连续的,也不是完全随机的,但银行决定的部分可能是随机的——这取决于它们如何分配它们。它们当然不是连续的。