Here’s an example of jQuizMe.
Goal: Make a quiz for Addition, Subtraction and Multiplication for two digit numbers.
Steps:
- Make a random number generator.
- Make a function to form a question and answers.
- Form the quiz.
- Call jQuizMe
Step 1:
I wrote a random number generator in javascript here.
1
2
3
4
| var getRandomNum = function( i, decLen ){
var powOf10s = Math.pow( 10, decLen || 0 );
return i ? Math.floor( powOf10s * Math.random() * i ) / powOf10s : Math.random();
}; |
var getRandomNum = function( i, decLen ){
var powOf10s = Math.pow( 10, decLen || 0 );
return i ? Math.floor( powOf10s * Math.random() * i ) / powOf10s : Math.random();
};
Or.. you could just use Math.floor( Math.random() * number ).
Step 2 & 3: (Due to time constraints I combined step 2 and 3.)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
| var link = "http://bateru.com/news/2011/04/learn-sig-figs-in-no-time/";
var ops = operations = [ " + ", " - ", " * ", " / " ];
var precision = 2;
var arrOfRandomNum = function( arrLength, max, decLen ){
if( arrLength < 0 ){ return false; }
var arr = [], i = arrLength;
while( i-- ){
arr[ i ] = getRandomNum( max, decLen );
}
return arr;
};
var makeQuiz = function(){
var quiz = { "fill":[] };
var question = '', nums = [];
var i = questionLength = 10;
while( i-- ){
nums = arrOfRandomNum( 2, 19 );
question = nums.join( ops[ getRandomNum( ops.length ) ] );
quiz.fill.push({
ques: question,
ans: eval( question ).toPrecision(precision)
});
}
return quiz;
} |
var link = "http://bateru.com/news/2011/04/learn-sig-figs-in-no-time/";
var ops = operations = [ " + ", " - ", " * ", " / " ];
var precision = 2;
var arrOfRandomNum = function( arrLength, max, decLen ){
if( arrLength < 0 ){ return false; }
var arr = [], i = arrLength;
while( i-- ){
arr[ i ] = getRandomNum( max, decLen );
}
return arr;
};
var makeQuiz = function(){
var quiz = { "fill":[] };
var question = '', nums = [];
var i = questionLength = 10;
while( i-- ){
nums = arrOfRandomNum( 2, 19 );
question = nums.join( ops[ getRandomNum( ops.length ) ] );
quiz.fill.push({
ques: question,
ans: eval( question ).toPrecision(precision)
});
}
return quiz;
}
Step 4:
1
2
3
| $( "#quiz" ).jQuizMe( makeQuiz(), {
intro: ops.join(',') + " quiz.<br>Note: Your answer must have " + precision + " <a href='"+link+"'>sig figs</a>."
}); |
$( "#quiz" ).jQuizMe( makeQuiz(), {
intro: ops.join(',') + " quiz.<br>Note: Your answer must have " + precision + " <a href='"+link+"'>sig figs</a>."
});
Here’s the working demo.