【发布时间】:2013-05-04 14:00:04
【问题描述】:
我正在从以下字符生成一个 6 位代码。这些将用于在贴纸上盖章。
它们将以 10k 或更少的批次生成(打印前),我不认为总数会超过 1-200 万(可能要少得多)。
生成这批代码后,我会检查现有代码的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 位代码)。抱歉,数学不是我的强项
【问题讨论】:
-
这里有一些关于各种方法的好帖子:stackoverflow.com/questions/1846202/…
-
如果您不需要超过 800 万个代码,并且简短且明确的代码是高优先级,我会说您有一个很好的方法。
标签: php algorithm random permutation