Tutto e` possibile (... quasi). Resta da vedere quanto costa (in termini di programmazione).
Comunque nel tuo caso e` possibile.
Allora ci vuole anche un altro vettore che dice alle celle della tabella cosa devono contenere (se niente o uno dei link/immagini).
codice:
var tabe = new Array(N); // N e` il numero di campi della tabella
for(var i=0; i<tabe.length; i++) { // inizializzazione a vuota
tabe[i] = "&nbsp;";
}
var matr = new Array(N); // stessa lunghezza
matr[0] = ('link1', 'imm1');
matr[1] = ('link2', 'imm2');
matr[2] = ('link3', 'imm3');
...fino al numero di link -1 (supponiamo 5)
matr[5] = ("","");
matr[6] = ("","");
... fino a N-1
// ora occorre riempire il vettore tabe
// con i dati contenuti nella matrice matr, presi in ordine random.
for(var i=0; i<tabe.length; i++) {
tabe[i] = "";
var ind = Math.floor(Math.random()*matr.length); // n random
if(matr[ind][0] == "") { // cella vuota
tabe[i] = "&nbsp;";
} else { // riempimento cella
tabe[i] = "<a href='" + matr[ind][0] + "'>";
tabe[i] += "[img]" + matr[ind][1] + "[/img]</a>";
}
matr.splice(ind,1); // toglie elemento da matr
}
// a questopunto tabe e` piena, mentre matr e` vuota (length==0)
Poi al posto della codice HTML da inserire nella tabella (quindi nel body):
<td ...>
<script type="text/javascript">document.write(tabe[XX]);</script>
</td>
Al posto di XX devi mettere il numero progressivo (a partire da 0).
Non ho testato nulla, per cui ci possono essere errori