我必须生成16位数的随机数,例如recharg card pin number。(起始位置包括0) 这是我的代码
function gen_num($len) {
$rand = '';
while(!(isset($rand[$len-1]))){
$rand .= mt_rand(0,9);
}
return substr( $rand , 0 , $len );
}
它工作正常但需要时间来生成。如果我想同时生成1000个引脚,如
foreach($i=0;$i<=1000;$i++){
get_num(16)
}
需要更多时间。生成这种引脚的最佳方法是什么?
答案 0 :(得分:4)
你可以尝试这个功能。这样可以正常工作。
function getRandomNumber($len = "15")
{
$better_token = $code=sprintf("%0".$len."d", mt_rand(1, str_pad("", $len,"9")));
return $better_token;
}
for($i=0;$i<=1000;$i++){
$codes[]=getRandomNumber(16);
}
在$ code数组中,您将获得包含0.Output的所有16位数字,如下所示
Array
(
[0] => 6432618102990092
[1] => 5412363498471678
[2] => 8415870470926167
[3] => 2724858690053225
[4] => 3719462379813195
[5] => 0322053456788270
[6] => 5085590323433281
[7] => 3586620986461640
[8] => 5041978429071606
[9] => 0722051602788270
.....
答案 1 :(得分:1)
$a = '';
for ($i = 0; $i<16; $i++)
{
$a .= mt_rand(0,9);
}
您可以使用此功能生成随机数。
可以使用相同的数字生成twise,这样您就可以将这个数字放在数组中,并且检查数组编号是否已经存在。
function gen_num() {
$rand = 0;
for ($i = 0; $i<15; $i++)
{
$rand .= mt_rand(0,9);
}
return $rand;
}
foreach($i=0;$i<=1000;$i++){
echo get_num();
}
O / P
1992282192849338
2539119565182977
8186185479424499
9762937534145386
5565837949946845
6487684896937977
1437518184397774
1586381543857153
5673128433587996
4988724673517522
8323477255626612
答案 2 :(得分:0)
这样的事情会很好:
function random_digits($length) {
$length = intval($length, 10);
$output = '';
for ($i = 0; $i < $length; $i++) {
$output .= mt_rand(0, 9);
}
return $output;
}