您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

生成唯一的6位代码

生成唯一的6位代码

21 ^ 6 = 85766121种可能性。

使用数据库并存储使用过的值是不好的。如果要伪造随机性,可以使用以下方法

减少到19个可能的数字,并利用以下事实:p为奇质数的p ^ k阶的组始终是循环的。

以7 ^ 19阶的组为例,使用生成器互质数为7 ^ 19(我选择13 ^ 11,您可以选择不能被7整除的任何东西)。

然后进行以下工作:

$prevIoUs = 0;

function generator($prevIoUs)
{

  $generator = pow(13,11);
  $modulus = pow(7,19); //int might be too small
  $possibleChars = "ACEFHJKMNPRTUVWXY49";

  $prevIoUs = ($prevIoUs + $generator) % $modulus;
  $output='';
  $temp = $prevIoUs;

  for($i = 0; $i < 6; $i++) {
    $output += $possibleChars[$temp % 19];
    $temp = $temp / 19;
  }

  return $output;
}

它将循环遍历所有可能的值,并且看起来有些随机,除非它们开始挖掘。一个更安全的选择是乘法组,但我已经忘记了数学:(

其他 2022/1/1 18:13:39 有639人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶