PHP:
//$key_array[$i] Содержит в конце перевод строки, следовательно от него лучше избавиться, например
$replace = trim($key_array[$i]);
а чтобы через random здесь нужно посчитать кол-во вхождений точек например через substr_count, затем выбрать случайное число в полученном диапазоне. И составить regexp для замены.
или
через explode разбивает строку на подстроки, по кол-ву элементов массива-1 получаем сколько точек. выбираем случайное число в этом диапазоне, потом перебираем элементы и составляем окончательную строку используя как клей точку или $key_array[$i] в зависимости от того какой индекс и какое случайное число выбрали.