Для случайного цвета RGB нам потребуются три числа от 0 до 255, а для цвета в формате HSL нам понадобится одно число от 0 до 360 и два числа от 0 до 100.

Если нам нужен случайный HEX-цвет, нам понадобится число от 0 до 16777215, которое мы затем преобразуем из десятичного в шестнадцатеричный.

RGB

Код PHP для случайного цвета RGB будет выглядеть так:

<?php
  echo 'rgb(' . rand(0, 255) . ', ' . rand(0, 255) . ', ' . rand(0, 255) . ');';

В JavaScript Math.random возвращает число от 0 до 1, поэтому нам нужно умножить это число на 255, чтобы получить случайные числа от 0 до 255.

<script>
    alert('rgb(' + Math.floor((Math.random() * 255)) + ', ' + Math.floor((Math.random() * 255)) + ', ' + Math.floor((Math.random() * 255)) + ');');
</script>

ВШЛ

В PHP мы можем получить случайный цвет HSL следующим образом:

<?php 
  echo 'hsl(' . rand(0, 360) . ', ' . rand(0, 100) . '%, ' . rand(0, 100) . '%);';

В JavaScript нам нужно снова умножить возвращаемое значение из Math.random, на этот раз с 360 для первого числа и 100 для следующих чисел.

<script>
    alert('hsl(' + Math.floor((Math.random() * 360)) + ', ' +    Math.floor((Math.random() * 100)) + '%, ' + Math.floor((Math.random() * 100)) + '%);');
</script>

Шестнадцатеричный

Чтобы получить случайный HEX-цвет в PHP, мы сначала создаем случайное число между 0–16777215 (0xFFFFFF) с помощью mt_rand, а затем преобразуем это десятичное число в шестнадцатеричное.

Поскольку для цвета HEX всегда требуется 3 или 6 цифр, нам нужно будет дополнить строку шестизначным шестнадцатеричным значением с помощью str_pad.

<?php
  echo '#' . str_pad(dechex(mt_rand(0, 0xFFFFFF)), 6, '0', STR_PAD_LEFT);

Для лучшего обзора я разделил код Javascript на несколько строк:

<script>
    var randomNumber = Math.floor((Math.random() * 16777215));
    var randomHex    = randomNumber.toString(16);
    var randomHexColor = randomHex.padStart(6, 0);
    alert('#' + randomHexColor);
</script>