Буквы будут рано или поздно повторяться, если отталкиваться от текущего решения, то я бы загонял шесть случайных чисел в отдельный массив и проверял бы новое рандомное на принадлежность одному из предыдущих.
А на кой чёрт вообще все эти движения с explode, если можно было просто создать строку со всеми буквами и обращаться к отдельным буквам просто по индексу?