PHP生成00 - 29之间的随机数[重复]

Posted

技术标签:

【中文标题】PHP生成00 - 29之间的随机数[重复]【英文标题】:PHP Generate Random Number Between 00 - 29 [duplicate] 【发布时间】:2012-08-05 15:24:23 【问题描述】:

可能重复:Formatting a number with leading zeros in php

我的值介于 00 - 29 之间,需要使用 PHP 随机选择。 我尝试使用 rand() 函数,但它给了我 0 - 29。而不是 00、01、02、03 ... 等等。

如何从 PHP 中随机获取 00 - 09 而不是 0 - 9?谢谢。

【问题讨论】:

【参考方案1】:
$random = sprintf("%02f", rand(0,29));

或者,如 cmets 中所述:

$random = str_pad(rand(0,29), 2, "0", STR_PAD_LEFT);

【讨论】:

我会用 sprintf 而不是 spintf ;) +1 打败我。 str_pad() 也是一个不错的选择。在这种情况下,技术比 *printf() 少一点。 它给了我:0.00, 1.00, 2.00... 不是 00, 01, 02... 这里有什么遗漏吗? 更新了答案以显示str_pad()(杰森好点)并修复了小数错误 他的sprintf() 格式错误,请参阅更新。 (告诉你这是技术性的:)【参考方案2】:

使用str_pad:

$random = str_pad(rand(0, 29), 2, '0', STR_PAD_LEFT);

【讨论】:

【参考方案3】:

创建一个类似的数组

$array = array('00','01','02','03'....,'29');
echo $array[array_rand($array)];

【讨论】:

+1 用于提供替代方案。虽然相当 解决方案:) @JasonMcCreary 我同意。这是一个丑陋的解决方案。 是的,它会起作用,但不要那样做:)【参考方案4】:

a) 如果值低于 10,则添加“0”

b) 使用 number_format 处理输出

【讨论】:

【参考方案5】:

您可以使用 sprintf 来格式化数字。

$number = rand(0,29);
$number = sprintf("%02d", $number);

在 PHP 手册中搜索 sprintf

【讨论】:

【参考方案6】:

您也可以使用这种不依赖附加功能的方法:

$n = rand(0, 29);
if( $n < 10 ) $n = "0" . $n;

【讨论】:

是的,这项工作。但是当存在本机函数时很愚蠢。为什么要围绕它们编写代码? Be a better PHP developer.

以上是关于PHP生成00 - 29之间的随机数[重复]的主要内容,如果未能解决你的问题,请参考以下文章

php取随机数概率算法

如何用php生成1-10之间的不重复随机数

Python:在x和y之间生成随机数,它是5的倍数[重复]

PHP CodeBase: 生成N个不重复的随机数

js如何在一个时间段内生成随机的的时间日期?求指教?

PHP生成不重复随机数的几种方法