Random Question Test

Random Question Test

by Nate Nate -
Number of replies: 25
I'm building a quiz that has 25 Essay questions in a category built for that quiz.  And I want it to pull 5 random questions.  So I clicked on the drop down, clicked on 5, clicked Add.  It added the 5 Random questions to the test, but when I go to preview it I get this error...
The number of random questions required is more than this category contains! (923)

I built 4 other quizzes that have 45 random questions in them and I didn't have any problems with those.  The only difference is that the other 4 aren't pulling essay type questions in for the questions.  Thanks for any help.
Average of ratings: -
In reply to Nate Nate

Re: Random Question Test

by Anthony Borrow -
Picture of Core developers Picture of Plugin developers Picture of Testers
I'm not sure which version of Moodle you are using but AFAIK there was a patch the excluded the essay type question from being randomized. I would like to see this added back in so that they can be but currently you cannot count essay type questions as being available for random selection.
In reply to Anthony Borrow

Re: Random Question Test

by Eduardo Hernandez -
I'm running Moodle 1.6 and I get the same message.. is there any workaround?

Eduardo
In reply to Eduardo Hernandez

randomizing essay questions in 1.6

by Eduardo Hernandez -
I did some research on essay/random questions as I was getting the error that appears in the starting post of this thread.

I put an echo to the print_question function to display the $question->qtype.

When I have a quiz consisting of only 1 random question taken from a category with 2 multiple choice questions, and if I go to "preview" my echo says ...

"random"

But... but... If I create a new Quiz, consisting of only 1 random question taken from a category with 2 essay questions, and If I go to "Preview" my echo says...

"description"

My question... why "description"?..Could it be the reason or the bug why essay questions are not working as random questions ???

When attempt.php (in line 275 aprox.) calls to

if (!$questions = get_records_sql($sql)) {

$questions returns, for my quiz,

Array
(
    [14] => stdClass Object
        (
            [id] => 14
            [0] => 4
            [category] => 4
            [1] => 14
            [parent] => 14
            [2] => Pregunta aleatoria (2)
            [name] => Pregunta aleatoria (2)
            [3] => 0
            [questiontext] => 0
            [4] => 0
            [questiontextformat] => 0
            [5] =>
            [image] =>
            [6] => 1
            [defaultgrade] => 1
            [7] => 0
            [penalty] => 0
            [8] => random
            [qtype] => random
            [9] => 1
            [length] => 1
            [10] => localhost+060812035535+ahQTBw
            [stamp] => localhost+060812035535+ahQTBw
            [11] => localhost+060812035535+hHbtWw
            [version] => localhost+060812035535+hHbtWw
            [12] => 0
            [hidden] => 0
            [13] => 1
            [maxgrade] => 1
            [14] => 11
            [instance] => 11
        )

)

But at line 293 there's a call to

if (!$states = get_question_states($questions, $quiz, $attempt)) {

and after this call $question changes to

Please note how now it is set to "description" (why?).

By the way...
"El número requerido de preguntas es mayor de las que contiene esta categoría." means in Spanish "The number of random questions required is more than this category contains"

Array
(
    [14] => stdClass Object
        (
            [id] => 14
            [0] => 4
            [category] => 4
            [1] => 14
            [parent] => 14
            [2] => Pregunta aleatoria (2)
            [name] => Pregunta aleatoria (2)
            [3] => 0
            [questiontext] => El número requerido de preguntas es mayor de las que contiene esta categoría.
            [4] => 0
            [questiontextformat] => 0
            [5] =>
            [image] =>
            [6] => 1
            [defaultgrade] => 1
            [7] => 0
            [penalty] => 0
            [8] => random
            [qtype] => description
            [9] => 1
            [length] => 1
            [10] => localhost+060812035535+ahQTBw
            [stamp] => localhost+060812035535+ahQTBw
            [11] => localhost+060812035535+hHbtWw
            [version] => localhost+060812035535+hHbtWw
            [12] => 0
            [hidden] => 0
            [13] => 1
            [maxgrade] => 1
            [14] => 11
            [instance] => 11
            [name_prefix] => resp14_
        )



)


Eduardo
In reply to Eduardo Hernandez

Re: randomizing essay questions in 1.6

by Tim Hunt -
Picture of Core developers Picture of Documentation writers Picture of Particularly helpful Moodlers Picture of Peer reviewers Picture of Plugin developers
Essays are excluded from random question types. I don't know why. This was all developed before I took over as quiz maintainer. There is probably a good reason.

If you want to experiment. Go into question/type/random/questiontype.php and at the top, where it says

     var $excludedtypes = array("'random'", "'randomsamatch'", "'essay'", "'description'");


try removing essay from that list. I have no idea whether it will work.


The behavior Eduardo notices above is just the code using a trick to display an error message in the middle of the quiz.
In reply to Tim Hunt

Re: randomizing essay questions in 1.6

by Michael Penney -
Hi Tim, see:
http://moodle.org/bugs/bug.php?op=show&bugid=4004&pos=12
&
http://moodle.org/bugs/bug.php?op=show&bugid=5065&pos=21

By the way, the search function in the bugtracker is not very good, Google advanced search, limit domain to moodle.org/bugs (in this case: random essay site:http://moodle.org/bugs/), perhaps works okwink.
In reply to Michael Penney

Re: randomizing essay questions in 1.6

by Eduardo Hernandez -
Hi Michael,

So more than a problem of randomizing essay questions (that seems to work fine if they are removed from excluded types), it is more a problem of grading them (when a random question is an essay question).

Eduardo

In reply to Michael Penney

Re: randomizing essay questions in 1.6

by Eduardo Hernandez -
I have been trying to make essay questions work with random questions, and I have been studying how a quiz works in the backstage.. and I have a question.

I have been trying to see when/how/where a randon question is *linked* to an original question, and the only place a see a reference is in table mdl_question_states where the answer column says, for example, random7-..., where I can say "this randon question is showin the question with id 7 from mdl_question"

Is this the right place to see the original question a random question is pointed at?.

Eduardo

In reply to Eduardo Hernandez

random essay questions in 1.6.1 (working) - not perfect

by Eduardo Hernandez -
Hello,

After some research, I see my random essay questions working in 1.6.1.

After all the hints and tips taken from this thread, I saw that random essay questions is more an issue of grading them, than selecting them randomly.

As, Tim said before I went to question/type/random/questiontype.php and at the top, where it says

var $excludedtypes = array("'random'", "'randomsamatch'", "'essay'", "'description'");

I changed it to

var $excludedtypes = array("'random'", "'randomsamatch'", "'description'");

With the modification above, you can add random essay questions to any quiz, and student will be seeing a normal quiz, with random essay questions (cool!).

The problem arises when a teacher now wants to grade answers. Going to "Manual Grading" tabs shows nothing left to grade, as questions are "random" not "essay". To include the random questions I have modified the code at mod/   quiz/report/grading/report.php at line 141 , to include 'random'

 $sql = "SELECT q.*, i.grade AS maxgrade, i.id AS instance".
               "  FROM {$CFG->prefix}question q,".
               "       {$CFG->prefix}quiz_question_instances i".
               " WHERE i.quiz = '$quiz->id' AND q.id = i.question".
               "   AND q.id IN ($questionlist)".
               "   AND q.qtype IN ($QTYPE_MANUAL,'random')".
               "   ORDER BY q.name";
 
the problem is that with this, it will include any random question, not only "random essay ". However, since any multiplechoice or true/false question are automatically graded, they are listed in manual grading  but it correctly says that no questions must be graded. Only essay and random essay questions are listed with the number of questions waiting for a manual grade.

The perfect solution would be to list only random essay and essay question, but... that will result in a more complex SQL query.. as I really don't know where to look - correctly- the real question a random is poiting at ...

Anyway...for now it works.

Cheers
Eduardo
Average of ratings: Useful (1)
In reply to Eduardo Hernandez

Re: random essay questions in 1.6.1 (working) - not perfect

by Tim Hunt -
Picture of Core developers Picture of Documentation writers Picture of Particularly helpful Moodlers Picture of Peer reviewers Picture of Plugin developers
Unfortunately, to do a better query, you would have to completely rewrite the report code, because different students will have been allocated differente essays via the same random question. It is certainly possible, but not easy. And I think the required SQL query would have to join together pretty much all the quiz and question tables.
In reply to Tim Hunt

Re: random essay questions in 1.6.1 (working) - not perfect

by Eduardo Hernandez -
Yes Tim; I totally agree with you. As our teachers like random essay question we had to give them a solution ASAP. So far, including random questions in the manual report has not produced problems for audience (after some little explation on why random questions appear).

Ed
In reply to Eduardo Hernandez

Re: random essay questions in 1.6.1 (working) - not perfect

by Paulo Matos -
Just shrinked the list a bit more, selecting only the random questions that had at least one QTYPE_MANUAL on its category


$sql = "SELECT q.*, i.grade AS maxgrade, i.id AS instance".
" FROM {$CFG->prefix}question q,".
" {$CFG->prefix}quiz_question_instances i".
" WHERE i.quiz = '$quiz->id' AND q.id = i.question".
" AND q.id IN ($questionlist)".

" AND ( q.qtype IN ($QTYPE_MANUAL) ".
" OR ( ".
" q.qtype = 'random' AND " .
" EXISTS ( select * from {$CFG->prefix}question q2 WHERE q2.category = q.category and q2.qtype IN ($QTYPE_MANUAL) ) " .
" ) ".
" ) ".

" ORDER BY q.name";


As far as I understood, random qtype chooses a non-random question among it's own category.

Cheers,

Paulo Matos
Average of ratings: Useful (1)
In reply to Paulo Matos

Re: random essay questions in 1.6.1 (working) - not perfect

by Olli Savolainen -
Here's another thumbs up for getting this fixed ASAP in moodle wide eyes.

Thanks a bunch Paulo! smile Got it fixed. This is a major issue for the electronic exam application being developed in the University of Tampere, it should definitely be somewhere in the quiz module GUI in BIG red letters so that it would be easy to acknowledge, until this finally and correctly gets fixed. I suppose it didn't get fixed yet in 1.7? How about saying "The number of random questions required is more than are still available in the category! (Note: 'random', 'randomsamatch', 'essay', 'description' type questions are currently not supported. If you want to support them, see http://moodle.org/mod/forum/post.php?reply=259905)" in that error message, or something similar?


In reply to Olli Savolainen

Re: random essay questions

by David Mudrák -
Picture of Core developers Picture of Documentation writers Picture of Moodle HQ Picture of Particularly helpful Moodlers Picture of Peer reviewers Picture of Plugin developers Picture of Plugins guardians Picture of Testers Picture of Translators
I have just spent several hours dealing with this problem. And I would really love if there was such a warning sleepy.
The feature still does not appear to be implemented in 1.7 nor in 1.8 dev. IMHO it is waiting for manual grading support for all question types... How far is it in the Quiz Roadplan?

I know there is a lot of other issues as well but I vote for this to be fixed in 1.8 wink
In reply to Olli Savolainen

Re: random essay questions in 1.6.1 (working) - not perfect

by Gwen Rodgers -
We get the message "The number of random questions required is more than are still available in the category!" on all random quizzes created.  Currently on Version 1.7.   Random quizzes worked fine for us before this version. There are definitely enough questions in the category. We get the message even when adding one question from a category. Thanks in advance for any help!
In reply to Gwen Rodgers

Re: random essay questions in 1.6.1 (working) - not perfect

by Eduardo Hernandez -
I have not seen random essay question on 1.7, but probably you seeing this message because random essay questions are not a 1.7 feature (there were not in 1.6); and you should apply the changes described in this forum, similar to 1.6.x; to make them work....
In reply to Paulo Matos

Re: random essay questions in 1.6.1 (working) - not perfect

by Manuel de la Torre -
Is there a fix for this problem in version 1.7+, I will appreciate any comments...

met.
In reply to Manuel de la Torre

Re: random essay questions in 1.6.1 (working) - not perfect

by venkatesan iyengar -
I could get random essay question running by modifying

function is_usable_by_random() {
return false;
}

in /moodle/question/type/essay/questiontype.php to

function is_usable_by_random() {
return true;
}

I tested in 1.8

In reply to venkatesan iyengar

Re: random essay questions in 1.6.1 (working) - not perfect

by Timothy Takemoto -

function is_usable_by_random()

does not seem to in my questiontype.php in 1.6.4

I see that there is a lot more complex stuff futher up this thread.

Okay
1) Changed
ar $excludedtypes = array("'random'", "'randomsamatch'", "'essay'", "'description'");
var $excludedtypes = array("'random'", "'randomsamatch'", "'description'");
2) Reinsert the random question (I missed this stage at first)

Question can now be seen by students.


In reply to Timothy Takemoto

Re: random essay questions in 1.6.1 (working) - not perfect

by Timothy Takemoto -
I added the code suggested by Paulo to mod/quiz/report/grading/report.php but it says that there are "no manually graded questions" under the Manual Grading tab of the results tab. However, the code by Eduardo Hernandez does seem to work and since I do not have any non-essay questions in the quiz (they are all randomly presented essay questions) I think that this is going to work.

Thank you very much Eduardo.

The ability to give random questions is very important since it is the best way to lessen cheating.

Tim



In reply to Timothy Takemoto

Re: random essay questions in 1.6.1 (working) - not perfect

by Matt Gibson -
MDL-8648

This is vital for me in building good written exams. vote please smile
In reply to venkatesan iyengar

Re: random essay questions in 1.6.1 (working) - not perfect

by Tomas Torres -
Venkatesan

I tried in moodle 1.8.3, not working, I modified

in /moodle/question/type/essay/questiontype.php to

function is_usable_by_random() {
return true;
}
I got to do something else.

Thanks a lot
In reply to Tomas Torres

Re: random essay questions in 1.6.1 (working) - not perfect

by Tomas Torres -
Sorry, is working in 1.8.3+, That was a mistake for my self.

Regards
In reply to Anthony Borrow

Re: Random Question Test

by Genner Cerna -
hopefully essay random question will available soon in next release... thanks
In reply to Genner Cerna

Re: Random Question Test

by Jonathan Bergmann -
Please fix this.  I have written severeal essay type questions and I want moodle to pick one at random for my kids.