# Random Hex Color

#### Technique #1

``````<?php

\$rand = array('0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f');
\$color = '#'.\$rand[rand(0,15)].\$rand[rand(0,15)].\$rand[rand(0,15)].\$rand[rand(0,15)].\$rand[rand(0,15)].\$rand[rand(0,15)];

?>``````

Then echo out the \$color value anywhere you need it. For example:

``<body style="background: <?php echo \$color; ?>;">``

#### Technique #2

``<?php printf( "#%06X\n", mt_rand( 0, 0xFFFFFF )); ?>``

There is also a JavaScript version.

1. Rimantas

Simpler version:

<php \$color = sprintf(“#%06x”,rand(0,16777215)); ?>

<body style="background: <php echo \$color; ?>;”>

2. Starla Insigna

Interestingly enough, I had to do this exact task just a few days ago. Here’s what I came up with:

`\$color = str_pad(dechex(rand(0,16777215),6, "0", STR_PAD_LEFT);`

3. Santosh Kumar

In technique #1 you can tweak with the code to get Red, Green and Blue shades out of the code. The all you have to play with is the value upto 15.

4. TerryB

Can I randomize hex colours from a preset list of colour hexes? If so then how?

yes you can with #1, but your preset list must have some common number such as #axbxcx or #aabbxx

for the solution #1, you can actually contorl the random color where #2 cannot

6. Sydcul

```\$rand = dechex(rand(0x000000, 0xFFFFFF)); echo('#' . \$rand); ```

You can change rand in for mt_rand if you want, and you can put strtoupper() around the dechex to make the random number look nicer (although it’s not required). That would look like `\$rand = strtoupper(dechex(rand(0x000000, 0xFFFFFF)));`

It works perfectly and is way simpler than all the other methods described here :)

• Archigos

I used the following line and refreshed my page many times (probably at least 30) and noticed that for it being ‘random’ it always seems to end in 00… I don’t think I had a single occurrence where it hasn’t yet.

`\$rand = strtoupper(dechex(rand(0x000000, 0xFFFFFF)));`

7. Phil

It can be nice to have control of the 3 component colours in case you don’t want a completely random colour from 000 to fff.
`\$random_color = sprintf("%02x%02x%02x", mt_rand(0x22, 0xaa), mt_rand(0x22, 0xaa), mt_rand(0x22, 0xaa));`
Tweak each mt_rand to be the range of colours you want. Here I’ve chosen 22 to aa so the result is not too saturated.

8. Catatan Belajar