3

phpを使用して、正確に15文字の長さで正の乱数を作成しようとしています。試しrand(100000000000000, 900000000000000)ましたが、それでも負の数と15未満の数値が生成されます。これを実行できる別の関数がありませんか、それともrand(0, 9)15回使用して結果を連結する必要がありますか?

4

4 に答える 4

9
$i = 0;
$tmp = mt_rand(1,9);
do {
    $tmp .= mt_rand(0, 9);
} while(++$i < 14);
echo $tmp;
于 2013-01-02T23:49:05.700 に答える
3

32ビットプラットフォームを使用しています。これらの整数を処理するには、64ビットプラットフォームが必要です。

randを2回実行して、次のように文字列として保存できます。

$num1 = rand(100000,999999);
$num2 = rand(100000,999999);
$num3 = rand(100,999);
$endString = $num1.$num2.$num3;

PS。私は自分よりもティガーソリューションの方が好きです。

于 2013-01-02T23:50:14.810 に答える
1

どうぞ。

function moreRand($len) { 
    $str = mt_rand(1,9);
    for($i=0;$i<$len-1;$i++) { 
        $str .= mt_rand(0, 9);
    }
    return $str;
}
echo moreRand(15); 

編集:実行時間を.00045秒短縮したい場合は、

 function randNum() { return abs(rand(100000000000000, 900000000000000)); }
于 2013-01-02T23:49:19.647 に答える
1

これは実際の整数値ではなく文字列を返すことに注意してください。

function randNum($length)
{
    $str = mt_rand(1, 9); // first number (0 not allowed)
    for ($i = 1; $i < $length; $i++)
        $str .= mt_rand(0, 9);

    return $str;
}

echo randNum(15);
于 2013-01-02T23:50:10.473 に答える