Guten Tag,
im SoSciSurvey Manual ist die Randomisierung von Blöcken etc. wunderbar beschrieben, allerdings finde ich auch nach mehrmaligem Ausprobieren keine Lösung für mein Problem:
Ich habe 6 Blöcke, die ich randomisieren möchte und deren Reihenfolge speichern (funktioniert tadellos):
// Erst einmal die Seitenkennungen als Array speichern
$parts = array(
'R1' => 'ID1start-ID1end',
'R2' => 'ID2start-ID2end',
'R3' => 'ID3start-ID3end',
'R4' => 'ID4start-ID4end',
'R5' => 'ID5start-ID5end',
'R6' => 'ID6start-ID6end'
);
// Jetzt noch die Reihenfolge der Blöcke zufällig mischen
$keys = array_keys($parts);
shuffle($keys);
// Für jeden Schlüssel die Position im gemischten Array abspeichern
put('IV01_01', array_search('R1', $keys) + 1);
put('IV01_02', array_search('R2', $keys) + 1);
put('IV01_03', array_search('R3', $keys) + 1);
put('IV01_04', array_search('R4', $keys) + 1);
put('IV01_05', array_search('R5', $keys) + 1);
put('IV01_06', array_search('R6', $keys) + 1);
// Jetzt das Ergebnis noch als Seitenabfolge festlegen
// Weiter soll es anschließend mit Seite 'FFMQ' gehen
setPageOrder(
$parts[$keys[0]],
$parts[$keys[1]],
$parts[$keys[2]],
$parts[$keys[3]],
$parts[$keys[4]],
$parts[$keys[5]],
'FFMQ'
);
Nun möchte ich in jedem dieser Blöcke Trials, also eine Abfolge von X Seiten, randomisieren und deren Reihenfolge auch speichern. Wenn ich das Prinzip wie oben anwende, scheinen aber die 6 "setPageOrder" Befehle mit der setPageOrder der großen "Blockrandomisierung" zu kollidieren, was dazu führt, dass mal nur 2, mal 4 etc. von 6 Blöcken präsentiert werden.
Hier ein Beispiel, wie eine Randomisierung auf der Startseite einer der 6 Blöcke aussieht:
// Erst einmal die Seitenkennungen als Array speichern
$trials1= array(
'1' => array('ID10CtT1Dec-ID10CtT1IT2'),
'2' => array('ID10CtT2Dec-ID10CtT2IT2'),
'3' => array('ID10CtT3Dec-ID10CtT3IT2'),
'4' => array('ID11CtT1Dec-ID11CtT1IT2'),
'5' => array('ID11CtT2Dec-ID11CtT2IT2'),
'6' => array('ID11CtT3Dec-ID11CtT3IT2'),
'7' => array('ID12CtT1Dec-ID12CtT1IT2'),
'8' => array('ID12CtT2Dec-ID12CtT2IT2'),
'9' => array('ID12CtT3Dec-ID12CtT3IT2'),
'10' => array('ID13CtT1Dec-ID13CtT1IT2'),
'11' => array('ID13CtT2Dec-ID13CtT2IT2'),
'12' => array('ID13CtT3Dec-ID13CtT3IT2'),
'13' => array('ID14CtT1Dec-ID14CtT1IT2'),
'14' => array('ID14CtT2Dec-ID14CtT2IT2'),
'15' => array('ID14CtT3Dec-ID14CtT3IT2'),
'16' => array('ID15CtT1Dec-ID15CtT1IT2'),
'17' => array('ID15CtT2Dec-ID15CtT2IT2'),
'18' => array('ID15CtT3Dec-ID15CtT3IT2'));
// Jetzt noch die Reihenfolge der Blöcke zufällig mischen
$key1 = array_keys($trials1);
shuffle($key1);
// Für jeden Schlüssel die Position im gemischten Array abspeichern
put('IV02_01', array_search('1', $key1) + 1);
put('IV02_02', array_search('2', $key1) + 1);
put('IV02_03', array_search('3', $key1) + 1);
put('IV02_04', array_search('4', $key1) + 1);
put('IV02_05', array_search('5', $key1) + 1);
put('IV02_06', array_search('6', $key1) + 1);
put('IV02_07', array_search('7', $key1) + 1);
put('IV02_08', array_search('8', $key1) + 1);
put('IV02_09', array_search('9', $key1) + 1);
put('IV02_10', array_search('10', $key1) + 1);
put('IV02_11', array_search('11', $key1) + 1);
put('IV02_12', array_search('12', $key1) + 1);
put('IV02_13', array_search('13', $key1) + 1);
put('IV02_14', array_search('14', $key1) + 1);
put('IV02_15', array_search('15', $key1) + 1);
put('IV02_16', array_search('16', $key1) + 1);
put('IV02_17', array_search('17', $key1) + 1);
put('IV02_18', array_search('18', $key1) + 1);
// Jetzt das Ergebnis noch als Seitenabfolge festlegen
// Weiter soll es anschließend mit Seite 'ID1end' gehen
setPageOrder(
$trials1[$key1[0]],
$trials1[$key1[1]],
$trials1[$key1[2]],
$trials1[$key1[3]],
$trials1[$key1[4]],
$trials1[$key1[5]],
$trials1[$key1[6]],
$trials1[$key1[7]],
$trials1[$key1[8]],
$trials1[$key1[9]],
$trials1[$key1[10]],
$trials1[$key1[11]],
$trials1[$key1[12]],
$trials1[$key1[13]],
$trials1[$key1[14]],
$trials1[$key1[15]],
$trials1[$key1[16]],
$trials1[$key1[17]],
'ID1end'
);
Über die Dauer und Menge der Trials bin ich mir bewusst, sie sind aber sehr kurz ;)
Vielleicht wissen Sie eine Lösung, wie ich sowohl für die Blöcke als auch die Trials innerhalb der Blöcke eine Randomisierung + Speicherung der Reihenfolgen erzielen könnte.
Vielen Dank im Voraus!
Nachdem ich Ihren Rat befolgen wollte, stoße ich auf folgendes Problem: Da ich 108 Trials randomisiere komme ich mit einer IV nicht hin, sondern bräuchte ja 2 (1-99, 100-108). Nun übersteigt es meine Kenntnisse das in einer foor loop zu bewerkstelligen. Vielleicht könnten Sie mir für den zweiten Teil nochmal helfen.
// Liste der Seiten definieren
$blocks = array(
// Block 1
array('1' => array('ID10CtT1Dec-ID10CtT1IT2'), '2' => array('ID10CtT2Dec-ID10CtT2IT2'),'3' => array('ID10CtT3Dec-ID10CtT3IT2'), '4' => array('ID11CtT1Dec-ID11CtT1IT2'), '5' => array('ID11CtT2Dec-ID11CtT2IT2'), '6' => array('ID11CtT3Dec-ID11CtT3IT2'), '7' => array('ID12CtT1Dec-ID12CtT1IT2'),'8' => array('ID12CtT2Dec-ID12CtT2IT2'),'9' => array('ID12CtT3Dec-ID12CtT3IT2'),'10' => array('ID13CtT1Dec-ID13CtT1IT2'),'11' => array('ID13CtT2Dec-ID13CtT2IT2'),'12' => array('ID13CtT3Dec-ID13CtT3IT2'), '13' => array('ID14CtT1Dec-ID14CtT1IT2'),'14' => array('ID14CtT2Dec-ID14CtT2IT2'),'15' => array('ID14CtT3Dec-ID14CtT3IT2'),'16' => array('ID15CtT1Dec-ID15CtT1IT2'),'17' => array('ID15CtT2Dec-ID15CtT2IT2'), '18' => array('ID15CtT3Dec-ID15CtT3IT2')),
// Block 2
array('19' => array('ID20CtT1Dec-ID20CtT1IT2'), '20' => array('ID20CtT2Dec-ID20CtT2IT2'),'21' => array('ID20CtT3Dec-ID20CtT3IT2'), '22' => array('ID21CtT1Dec-ID21CtT1IT2'), '23' => array('ID21CtT2Dec-ID21CtT2IT2'), '24' => array('ID21CtT3Dec-ID21CtT3IT2'), '25' => array('ID22CtT1Dec-ID22CtT1IT2'),'26' => array('ID22CtT2Dec-ID22CtT2IT2'),'27' => array('ID22CtT3Dec-ID22CtT3IT2'),'28' => array('ID23CtT1Dec-ID23CtT1IT2'),'29' => array('ID23CtT2Dec-ID23CtT2IT2'),'30' => array('ID23CtT3Dec-ID23CtT3IT2'), '31' => array('ID24CtT1Dec-ID24CtT1IT2'),'32' => array('ID24CtT2Dec-ID24CtT2IT2'),'33' => array('ID24CtT3Dec-ID24CtT3IT2'),'34' => array('ID25CtT1Dec-ID25CtT1IT2'),'35' => array('ID25CtT2Dec-ID25CtT2IT2'), '36' => array('ID25CtT3Dec-ID25CtT3IT2')),
// Block 3
array('37' => array('ID30CtT1Dec-ID30CtT1IT2'), '38' => array('ID30CtT2Dec-ID30CtT2IT2'),'39' => array('ID30CtT3Dec-ID30CtT3IT2'), '40' => array('ID31CtT1Dec-ID31CtT1IT2'), '41' => array('ID31CtT2Dec-ID31CtT2IT2'), '42' => array('ID31CtT3Dec-ID31CtT3IT2'), '43' => array('ID32CtT1Dec-ID32CtT1IT2'),'44' => array('ID32CtT2Dec-ID32CtT2IT2'),'45' => array('ID32CtT3Dec-ID32CtT3IT2'),'46' => array('ID33CtT1Dec-ID33CtT1IT2'),'47' => array('ID33CtT2Dec-ID33CtT2IT2'),'48' => array('ID33CtT3Dec-ID33CtT3IT2'), '49' => array('ID34CtT1Dec-ID34CtT1IT2'),'50' => array('ID34CtT2Dec-ID34CtT2IT2'),'51' => array('ID34CtT3Dec-ID34CtT3IT2'),'52' => array('ID35CtT1Dec-ID35CtT1IT2'),'53' => array('ID35CtT2Dec-ID35CtT2IT2'), '54' => array('ID35CtT3Dec-ID35CtT3IT2')),
// Block 4
array('55' => array('ID40CtT1Dec-ID40CtT1IT2'), '56' => array('ID40CtT2Dec-ID40CtT2IT2'),'57' => array('ID40CtT3Dec-ID40CtT3IT2'), '58' => array('ID41CtT1Dec-ID41CtT1IT2'), '59' => array('ID41CtT2Dec-ID41CtT2IT2'), '60' => array('ID41CtT3Dec-ID41CtT3IT2'), '61' => array('ID42CtT1Dec-ID42CtT1IT2'),'62' => array('ID42CtT2Dec-ID42CtT2IT2'),'63' => array('ID42CtT3Dec-ID42CtT3IT2'),'64' => array('ID43CtT1Dec-ID43CtT1IT2'),'65' => array('ID43CtT2Dec-ID43CtT2IT2'),'66' => array('ID43CtT3Dec-ID43CtT3IT2'), '67' => array('ID44CtT1Dec-ID44CtT1IT2'),'68' => array('ID44CtT2Dec-ID44CtT2IT2'),'69' => array('ID44CtT3Dec-ID44CtT3IT2'),'70' => array('ID45CtT1Dec-ID45CtT1IT2'),'71' => array('ID45CtT2Dec-ID45CtT2IT2'), '72' => array('ID45CtT3Dec-ID45CtT3IT2')),
// Block 5
array('73' => array('ID50CtT1Dec-ID50CtT1IT2'), '74' => array('ID50CtT2Dec-ID50CtT2IT2'),'75' => array('ID50CtT3Dec-ID50CtT3IT2'), '76' => array('ID51CtT1Dec-ID51CtT1IT2'), '77' => array('ID51CtT2Dec-ID51CtT2IT2'), '78' => array('ID51CtT3Dec-ID51CtT3IT2'), '79' => array('ID52CtT1Dec-ID52CtT1IT2'),'80' => array('ID52CtT2Dec-ID52CtT2IT2'),'81' => array('ID52CtT3Dec-ID52CtT3IT2'),'82' => array('ID53CtT1Dec-ID53CtT1IT2'),'83' => array('ID53CtT2Dec-ID53CtT2IT2'),'84' => array('ID53CtT3Dec-ID53CtT3IT2'), '85' => array('ID54CtT1Dec-ID54CtT1IT2'),'86' => array('ID54CtT2Dec-ID54CtT2IT2'),'87' => array('ID54CtT3Dec-ID54CtT3IT2'),'88' => array('ID55CtT1Dec-ID55CtT1IT2'),'89' => array('ID55CtT2Dec-ID55CtT2IT2'), '90' => array('ID55CtT3Dec-ID55CtT3IT2')),
// Block 6
array('91' => array('ID60CtT1Dec-ID60CtT1IT2'), '92' => array('ID60CtT2Dec-ID60CtT2IT2'),'93' => array('ID60CtT3Dec-ID60CtT3IT2'), '94' => array('ID61CtT1Dec-ID61CtT1IT2'), '95' => array('ID61CtT2Dec-ID61CtT2IT2'), '96' => array('ID61CtT3Dec-ID61CtT3IT2'), '97' => array('ID62CtT1Dec-ID62CtT1IT2'),'98' => array('ID62CtT2Dec-ID62CtT2IT2'),'99' => array('ID62CtT3Dec-ID62CtT3IT2'),'100' => array('ID63CtT1Dec-ID63CtT1IT2'),'101' => array('ID63CtT2Dec-ID63CtT2IT2'),'102' => array('ID63CtT3Dec-ID63CtT3IT2'), '103' => array('ID64CtT1Dec-ID64CtT1IT2'),'104' => array('ID64CtT2Dec-ID64CtT2IT2'),'105' => array('ID64CtT3Dec-ID64CtT3IT2'),'106' => array('ID65CtT1Dec-ID65CtT1IT2'),'107' => array('ID65CtT2Dec-ID65CtT2IT2'), '108' => array('ID65CtT3Dec-ID65CtT3IT2'))
);