Don't Try To Create "AllInOne" Questions 
Top Previous Next 
It is very tempting to create "allinone" questions that cover every possible situation. You keep adding parameters, allowing for negative cases, making ranges larger. Doing this, you can quickly create questions which have billions of available variations. This sounds great but comes with a huge cost. You will, almost inevitably, create versions with wildly different levels of difficulty.
For example, you could design a parametized simultaneous equations question like this.
±$ax ±$by = ±$c ±$dx ±$ey = ±$f
Depending on the ranges set for $a, $b, $c, $d, $e and $f, this question could feasibly produce any two variable simultaneous equation. If you are not careful, regeneration might produce
2x  y = 6 2x + y = 2
Which is nice and easy to solve  many students will be able to solve it mentally. A second regeneration might then produce this.
12x  y = 31 7x + 5y = 17
Which students will find SIGNIFICANTLY harder to solve. Including very general parametized questions into a test can make management of the test much harder as you try to produce different versions of the test at approximately the same level of difficulty. Usually it is better to produce far more targeted parametized questions like this...
$ax  y = $b $cx + y = $d
If you created the following parameters:
$a=range(2,9) $c=range(2,9) $x=range(1,20) $y=range(1,20) $b=$a*$x$y $d=$c*$x+$y
You will produce much more consistent questions to give to students. All of the following are possible.
3x  y = 17 6x + y = 46
8x  y = 10 9x + y = 24
2x  y = 13 5x + y = 36
Each question is solved the same way. Each question will produce positive integer answers. Using this more targeted version of my question makes the question more useful in a test but there are STILL over 2 million variations!
