Question

I need a random 4 digit number

right now im using rand(1000,9999) that always gives me a 4 digit number but i eliminates 0000-0999 as possible results.

how do you pad a random number?

(also this is eventually going to be added to a string do i need to cast the int as a string?)

thanks

Was it helpful?

Solution

In scripting languages like PHP, you don't have to cast in 99% of the cases.

Padding could be done using

sprintf("%04u", rand(0, 9999));

Explanations

the first argument of sprintf specifies the format

  • % stays for the second, third, forth etc. argument. the first % gets replaced by the second argument, the second % by the third etc.
  • 0 stays for the behaviour of filling with 0 to the left.
  • 4 stays for "At least 4 characters should be printed"
  • u stays for unsigned integer.

OTHER TIPS

sprintf("%04d", rand(0,9999))

should do what you want

Quick and dirty... how about doing:

rand(10000,19999)

and take the last four digits:

substr(rand(10000, 19999), 1, 4)
str_pad(mt_rand(0, 9999), 4, '0', STR_PAD_LEFT);

Use mt_rand() instead of rand(), it's better.

You can use str_pad() or sprintf() to format your string:

$rand = rand(0, 9999);
$str1 = str_pad($rand, 4, '0', STR_PAD_LEFT);
$str2 = sprintf('%04u', $rand);
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top