Ich verstehe es wie folgt:
4 Kategorien x 3 Grundbilder x 2 Varianten = 24 Bilder gesamt.
Im Prinzip sieht also jede Person alle 12 Bilder - aber zufällig in einer der beiden Varianten. Korrekt?
Wenn dem so ist, dann brauchen Sie m.E. zwei Rotationen, die Sie übereinanderlegen. Die eine enthält die Zahlen 1 bis 12 für die 12 (Grund-)Bilder. Diese braucht es in zufälliger Abfolge. Soweit so gut.
Die andere Rotation zieht 12-mal aus den Zahlen 1 und 2. Also z.B.
1 2 2 2 2 1 2 1 1 1 2 1
Das definiert dann, in welcher Variante die Bilder 1 bis 12 jeweils gezeigt werden. Ob die 1/2-Varianten hierbei gleich häufig vorkommen sollen oder nicht, das müssten Sie entscheiden und dem Zufallsgenerator mitteilten.
Ich muss allerdings darauf verweisen, dass bei dieser Überlagerung nicht sichergestellt ist, dass jedes Bild gleich häufig in jeder Variante gezeigt wird. Sie müssten hier mit den statistischen Abweichungen rechnen.
Zur Umsetzung im PHP-Code ... wenn Sie die beiden Listen haben, z.B. in RG01_01 bis RG01_12 und in RG02_01 bis RG02_12, dann müssen Sie diese nur noch abarbeiten. Hier ein Beispiel zur Inspiration:
$i = loopPage(12);
$bilder = [
1 => ['bild1a.jpg', 'bild1b.jpg'],
2 => ['bild2a.jpg', 'bild2b.jpg'],
// u.s.w.
];
$bild = value(id('RG01', $i + 1));
$variante = value(id('RG02', $i + 1));
if ($variante == 1) {
html('<img src="'.$bilder[$bild][0].'">');
} else {
html('<img src="'.$bilder[$bild][1].'">');
}