var s = 'Я люблю Москву всеми частями своего тела';
var arr = s.split(/\s+/g),lng = arr.length;
var n = Math.floor(Math.random() *3+1);//число заменяемых пробелов;max = 3
var arr2=[];
function rand(n) {
if(n<=0)return;
var a= Math.floor(Math.random() *(lng-1));
if(('='+arr2.join('=')+'=').indexOf('='+a+'=')!=-1){rand(n);return} //если номер пробела есть уже в списке выбор повторяем;
arr2.push(a);
--n;
rand(n);
} rand(n);
var s2='', tstStr = '='+arr2.join('=')+'=';
for (var i=0; i<lng; i++){
var d = ' '; if(tstStr.indexOf('='+(i-1)+'=')!=-1) d = '<a href="#"> cool </a>';
s2+=d + arr[i];
}
alert(['arr2='+arr2,'\n'+s2])
Хотя можно упростить, опустив пункт задания числа заменяемых пробелов;(их число будет меняться за счет случайного совпадений индексов)
var s = 'Я люблю Москву всеми частями своего тела';
var arr = s.split(/\s+/g),lng = arr.length;
var arr2=[];
function rand(n) {
if(n<=0)return;
var a= Math.floor(Math.random() *(lng-1));
arr2.push(a);
--n;
rand(n);
} rand(3); //max = 3
var s2='', tstStr = '='+arr2.join('=')+'=';
for (var i=0; i<lng; i++){
var d = ' '; if(tstStr.indexOf('='+(i-1)+'=')!=-1)d = '<a href="#"> cool </a>';
s2+=d + arr[i];
}
alert(['arr2='+arr2,'\n'+s2])