PennController for IBEX › Forums › Support › randomized set of scales on different pages › Reply To: randomized set of scales on different pages
June 20, 2023 at 7:48 am
#10696
Keymaster
Hi,
Assuming you are not using Template, you can list the question+scale pairs in an array and shuffle it, then successively fetch the elements from the (shuffled) array in three different trials:
// array of functions that return a question+scale pair
SCALES = [
()=>[
newText("question1", "Question 1").center().print(),
newScale("scale1", 7).before(newText("low X1")).after(newText("high X1")).log().center().print()
],
()=>[
newText("question2", "Question 2").center().print(),
newScale("scale2", 7).before(newText("low X2")).after(newText("high X2")).log().center().print()
],
()=>[
newText("question3", "Question 3").center().print(),
newScale("scale3", 7).before(newText("low X3")).after(newText("high X3")).log().center().print()
],
()=>[
newText("question4", "Question 4").center().print(),
newScale("scale4", 7).before(newText("low X4")).after(newText("high X4")).log().center().print()
],
()=>[
newText("question5", "Question 5").center().print(),
newScale("scale1", 7).before(newText("low X5")).after(newText("high X5")).log().center().print()
],
()=>[
newText("question6", "Question 6").center().print(),
newScale("scale6", 7).before(newText("low X6")).after(newText("high X6")).log().center().print()
],
// etc.
]
// shuffle the array
fisherYates(SCALES)
newTrial( "page1",
...SCALES[0](), // insert the commands returned by the function in the first entry of the array
...SCALES[1](), // insert the commands returned by the function in the second entry of the array
...SCALES[2](), // etc.
newButton("Next").center().print().wait()
)
newTrial( "page2",
...SCALES[3](),
...SCALES[4](),
...SCALES[5](),
newButton("Next").center().print().wait()
)
// etc.
Jeremy