php – 生成唯一的6位数代码

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了php – 生成唯一的6位数代码脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在从以下字符生成一个6位数的代码.这些将用于在贴纸上盖章.
它们将分批生成10k或更少(打印前),我不认为总计将超过1-2百万(可能更少).
生成批量代码后,我将检查现有代码MySQL数据库,以确保没有重复.
// exclude PRoblem chars: B8G6I1l0OQDS5Z2

$characters = 'ACEFHJKMNPRTUVWXY4937';

$string = '';

for ($i = 0; $i < 6; $i++) {
    $string .= $characters[rand(0,strlen($characters) - 1)];
}   

return $string;

>这是生成代码的可靠方法吗?
>会有多少种可能的排列? (来自21个字符的池中的6位数字代码).对不起数学不是我的强项

21 ^ 6 = 85766121种可能性.

使用DB并存储使用的值很糟糕.如果您想伪造随机性,可以使用以下内容

减少到19个可能的数字,并利用p为奇数素数的p ^ k组总是循环的事实.

取7 ^ 19的顺序组,使用生成器co-prime到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;
}

它会循环遍历所有可能的值,看起来有点随机,除非他们去挖掘.一个更安全的替代方案是乘法组,但我已经忘记了我的数学:(

脚本宝典总结

以上是脚本宝典为你收集整理的php – 生成唯一的6位数代码全部内容,希望文章能够帮你解决php – 生成唯一的6位数代码所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。