如何在PHP获得长19位随机数?

时间:2015-05-05 05:53:43

标签: php random long-integer uniqueidentifier

所以我需要制作独特的手机游戏购买数量。每个用户购买应用程序内购买项目记录应附加来自php代码的唯一长型19位数字并存储到mysql DB。

但我怎样才能真正制作随机的19位数字?

我试过这样但错误。

$num_str = sprintf("%19d", mt_rand(1, 9999999999999999999));

3 个答案:

答案 0 :(得分:3)

你也可以试试这个:

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

答案 1 :(得分:0)

你必须做类似的事情 -

$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;
  

当max超过2 ^ 32时,mt_rand()返回值的分布偏向于64位版本的PHP上的偶数。这是因为如果max大于mt_getrandmax()返回的值,则必须按比例放大随机数生成器的输出。

答案 2 :(得分:-1)

$ randNumber = date(“YmdHis”)。rand(11111,99999);