// Zufallsfunktion
var num = Math.round((picCount - 1) * Math.random());
Das geht so nicht. Damit kannst Du auch gut mal num == -1 bekommen, und da num dann als Index in die Arrays verwendet wird, wuerde das ein gelegentliches undefined ganz gut erklaeren. Besser:
var num = Math.floor(picCount * Math.random() - 1);
Vorsicht! Da machst eher DU den Fehler!
Math.random() liefert eine Zahl zwischen 0 und 1 (<1) zurück.
picCount * Math.random() - 1 kann also gut mal -1 ergeben,
während (picCount - 1) * Math.random() nur negative Werte ergibt, falls es keine Bilder gibt (picCount = 0). Der Fehler in der ursprünglichen Formel liegt eher beim Math.round, daß wohl bei eingen Browsern nur abrundet, bei anderen manchmal auch aufrundet (4.5 ergibt dann 5).
Um also bei picCount = 5 nur Zahlen von 0 bis 4 zu erzeugen muß keine der beiden vorigen sondern folgende Formel verwendet werden:
var num = Math.floor(picCount * Math.random());
Der Faktor picCount=5 wird dann mit einer Zahl zwischen 0 und 1 (<1) multipliziert. Das ergibt etwas zwischen 0 und 4.99999... , also abgerundet nur die Zahlen 0 bis 4. Die Zahl 5 ergibt sich nie, da Math.random() immer kleiner 1 ist!
Teste mal folgende Schleife mit einer der Zufallsformeln:
for (i=0; i<50; i++)
{
num = Math.floor(5*Math.random());
document.write(num);
document.write("<br>");
}
Das ergibt dann eine Seite mit 50 Zufallszahlen. Damit kann man dann ganz gut Testen, in welchen Zahlenbereich die Ergebnisse fallen.