Javascriptを使用してユーザーにランダムな数学の質問をする方法は?ユーザーが正解した場合、プログラムは「正解」と言うはずです。答えが間違っている場合、プログラムはFALSEと言うことになっています!ifステートメントとelseステートメントを使用することを考えていますが、方法がわかりません。また、ユーザーに5回異なる乱数ADDITIONの質問をするようにプログラムを作成することを考えています。最後に、プログラムはユーザーに4/5の質問が正しく答えられるなどの評価を与えます!乱数範囲:1〜10
質問する
7604 次
3 に答える
2
- 配列で可能な操作を定義する
- これらの操作のいずれかをランダムに実行します
- いくつかの制限 (例: 0-30) の間でランダムに 2 つの数値を取得します (10 / 0 のような受け入れられないケースを確認してください)
- ユーザー入力と計算結果を比較します。フロートの場合は、小さな公差を適用します。
実装は非常に簡単です。
編集のヒント: すべての関数を含むオブジェクトを作成し、そこからランダムに取得します。このようにして、eval() を回避します。
var operations = {
'+': function (a, b) {return a + b;},
'-': function (a, b) {return a - b;},
'/': function (a, b) {return a / b;},
'x': function (a, b) {return a * b;}
}
于 2013-03-10T11:41:15.320 に答える
2
function ask() {
var a = Math.floor(Math.random() * 10) + 1;
var b = Math.floor(Math.random() * 10) + 1;
var op = ["*", "+", "/", "-"][Math.floor(Math.random()*4)];
return prompt("How much is " + a + " " + op + " " + b + "?") == eval( a + op + b);
}
var questions = [ask(), ask(), ask(), ask(), ask()],
total = questions.length,
correct = questions.filter(Boolean).length;
alert( "You got "+correct+"/"+total+" correctly");
于 2013-03-10T11:42:37.090 に答える
0
追加だけで満足している場合:
function question() {
this.a = Math.round(Math.random()*10);
this.b = Math.round(Math.random()*10);
this.result = this.a + this.b;
this.checkResult = function(givenResultString) {
return (""+result == givenResultString);
}
}
次に、毎回質問を作成できます。
var q = new question();
そして答えをチェックしてください:
var response = q.checkResult(someString) ? "Correct!" : "FALSE!";
残りの作業は、フォームと結果 div を使用できるページの仕組みです。
さらに操作を追加する場合は、ランダム入力だけでなくランダム演算子も選択します。
function question() {
var add(x, y) { return x+y; };
var subtract(x, y) { return x-y; };
var multiply(x, y) { return x*y };
var operators = [add, subtract, multiply];
this.a = Math.round(Math.random()*10);
this.b = Math.round(Math.random()*10);
var operatorIdx = Math.min(Math.floor(Math.random()*4),3);
this.operator = operators[operatorIdx];
this.result = operator(this.a,this.b);
this.checkResult = function(givenResultString) {
return (""+this.result == givenResultString);
}
}
残りは整数を想定しているため、ここでは除算を省略しました。除算によって小数値が生成されないようにするには、初期化を変更する必要があります。簡単な方法は、乗算を初期化し、結果と a を交換することです。
于 2013-03-10T11:41:29.833 に答える