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

问题描述 投票:0回答:3

所以我需要制作手机游戏的唯一购买号。每个用户购买的应用内购买商品记录都应附加来自 php 代码的唯一长类型 19 位数字并存储到 mysql DB。

但是我怎样才能随机生成 19 位数字呢?

我尝试了这样的方法,但出现了错误。

$num_str = sprintf("%19d", mt_rand(1, 9999999999999999999));
php random long-integer uniqueidentifier
3个回答
4
投票

你也可以尝试这个:

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


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() 返回的值,则随机数生成器的输出必须按比例放大。


-1
投票

$randNumber = date("YmdHis").rand(11111,99999);

© www.soinside.com 2019 - 2024. All rights reserved.