我刚刚用PHP编写了一个随机数生成器,您认为这可以改进吗?

我刚刚用PHP编写了一个随机数生成器,您认为这可以改进吗?,php,performance,processing-efficiency,memory-efficient,Php,Performance,Processing Efficiency,Memory Efficient,我为一位客户工作,他希望代码以[char][int][int]格式生成,如T56、N78、J89等。。。字符必须是大写的 作为一种快捷方式,我编写了这个函数,因为我发现它是最简单的 function randomizer(){ $chars = array("A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X

我为一位客户工作,他希望代码以[char][int][int]格式生成,如T56、N78、J89等。。。字符必须是大写的

作为一种快捷方式,我编写了这个函数,因为我发现它是最简单的

function randomizer(){
    $chars = array("A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z");
    return $chars[array_rand($chars)].mt_rand(10, 99);
}
但我一直在想,还会有很多其他有效的解决方案。上面这一条很有效,但我更注重效率,因为我需要生成大量这样的代码


还有更好的起点

如果可以,您可能希望在函数外部存储
$chars
,因此不需要每次都创建它(例如,如果您希望在循环中生成1000个代码)

还有,这是你的捷径


$chars=范围(“A”、“Z”)

如果可以,您希望在函数外部存储
$chars
,因此不需要每次都创建它(例如,如果您希望在一个循环中生成1000个代码)

还有,这是你的捷径

$chars=范围(“A”、“Z”)

编辑:根据评论更改,谢谢@DaveRandom

echo chr(mt_rand(65,90)).str_pad((rand()%100),2,0,STR_PAD_LEFT);

编辑:根据评论更改,谢谢@DaveRandom。

静态
$chars=range('A','Z')是否允许像“T05”这样的值?你的函数不会生成它们。那不是一个随机数生成器。你使用的是随机数生成器。@Wug确实是允许的,我的代码错了,我的坏@我的错又来了!它应该是一个随机代码生成器,我认为我选择的解决方案工作得更好一些……静态
$chars=range('a','Z')是否允许像“T05”这样的值?你的函数不会生成它们。那不是一个随机数生成器。你使用的是随机数生成器。@Wug确实是允许的,我的代码错了,我的坏@我的错又来了!它应该是一个随机代码生成器,我认为我选择的解决方案工作得更好一些……我认为您忘记了
chr()
之后的第一部分,并且由于
ord('a')
ord('Z')
从不更改,因此最好是硬编码整数。另外,我认为sprintf('%02s',mt_rand(0,99))
对于第二部分来说会更有效。我认为你忘记了
chr()
之后的第一部分,而且因为
ord('A')
ord('Z')
永远不会改变,所以最好是硬编码整数。另外,我认为sprintf('%02s',mt_rand(0,99))
对于第二部分来说效率更高真的很好。。。我的代码有错误,因为它没有生成像T07这样的代码…真的很好。。。我的代码有错误,因为它没有生成像T07这样的代码。。。
echo chr(mt_rand(65,90)).str_pad((rand()%100),2,0,STR_PAD_LEFT);