如何获取PHP处的19位长随机数?
How to get Long 19 digits random numbers at PHP?
所以我需要做一个唯一的手游购买号。每个用户的内购商品购买记录应附上来自php代码的唯一长型19位数字并存储到mysql DB。
但是我怎样才能真正随机生成 19 位数字呢?
我这样试过但是出错了。
$num_str = sprintf("%19d", mt_rand(1, 9999999999999999999));
你必须做一些事情 -
$num_str = sprintf("%10d", mt_rand(1, mt_getrandmax())).sprintf("%9d", mt_rand(1, mt_getrandmax()));
if (strlen($num_str) < 19)
$num_str = str_pad($num_str, 19, rand(0, 9), STR_PAD_RIGHT);
else if(strlen($num_str) > 19)
$num_str = substr($num_str, 0, 19);
echo $num_str;
The distribution of mt_rand() return values is biased towards even numbers on 64-bit builds of PHP when max is beyond 2^32. This is because if max is greater than the value returned by mt_getrandmax(), the output of the random number generator must be scaled up.
你也可以试试这个:
function random19() {
$number = "";
for($i=0; $i<19; $i++) {
$min = ($i == 0) ? 1:0;
$number .= mt_rand($min,9);
}
return $number;
}
echo random19();
这将输出一些随机的 19 个数字:6416113158912395605
$randNumber = 日期("YmdHis").rand(11111,99999);
所以我需要做一个唯一的手游购买号。每个用户的内购商品购买记录应附上来自php代码的唯一长型19位数字并存储到mysql DB。
但是我怎样才能真正随机生成 19 位数字呢?
我这样试过但是出错了。
$num_str = sprintf("%19d", mt_rand(1, 9999999999999999999));
你必须做一些事情 -
$num_str = sprintf("%10d", mt_rand(1, mt_getrandmax())).sprintf("%9d", mt_rand(1, mt_getrandmax()));
if (strlen($num_str) < 19)
$num_str = str_pad($num_str, 19, rand(0, 9), STR_PAD_RIGHT);
else if(strlen($num_str) > 19)
$num_str = substr($num_str, 0, 19);
echo $num_str;
The distribution of mt_rand() return values is biased towards even numbers on 64-bit builds of PHP when max is beyond 2^32. This is because if max is greater than the value returned by mt_getrandmax(), the output of the random number generator must be scaled up.
你也可以试试这个:
function random19() {
$number = "";
for($i=0; $i<19; $i++) {
$min = ($i == 0) ? 1:0;
$number .= mt_rand($min,9);
}
return $number;
}
echo random19();
这将输出一些随机的 19 个数字:6416113158912395605
$randNumber = 日期("YmdHis").rand(11111,99999);