如何生成x位随机数?

时间:2015-12-01 05:24:31

标签: php

我必须生成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)
}

需要更多时间。生成这种引脚的最佳方法是什么?

3 个答案:

答案 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;
}