0

我需要生成一串 20 位数字的数字。以 20 个零开头,以 20 个 9 结尾。rand(0,9)我可以通过 for 循环运行正常来轻松地做到这一点。

for ($i = 0; $i < 20; $i++)
{
   $rng_salt .= rand(0,9);
}

但可以说,循环是一个漫长的过程。我想尝试弄清楚如何用mt_rand(00000000000000000000, 99999999999999999999)或类似的东西做同样的事情。如果可能的话,最好我想取消循环并将其分解为一行。

4

2 回答 2

1

您仍然可以将整个循环放在一行中

for($i = 0, $rng_salt = ""; $i < 20; $i ++, $rng_salt .= mt_rand(0, 9));
var_dump($rng_salt);

你也可以到处玩

$rng_salt = implode("",array_map(function($var){ return mt_rand(0, 9);}, range(0,19)));
var_dump($rng_salt);

做一些洗牌怎么样

$rng_salt = array_merge(range(0,9),range(0,9));
shuffle($rng_salt);
var_dump(implode("",$rng_salt));
于 2012-10-03T22:38:07.357 回答
1

在这里跳出框框思考。生成范围的随机数到下一个小数点,然后简单地修剪第一个数字 [1]。

$rng_salt = substr(mt_rand(100000000000000000000, 199999999999999999999),1,20)

Check substr parameters. I could be off on the numbers.

于 2012-10-03T22:41:29.997 回答