如何使用 Javascript 向用户提出随机数学问题?如果用户回答正确,程序应该说正确!如果答案是错误的,程序应该会说 FALSE!我正在考虑使用 if 和 else 语句,但我只是不知道如何。另外,我正在考虑让程序向用户询问不同的随机数添加问题 5 次。最后,程序会给用户一个评分,例如 4/5 的问题回答正确!随机数范围:1-10
问问题
7604 次
3 回答
2
- 在数组中定义可能的操作
- 随机采取这些操作之一
- 在某些限制之间随机取两个数字(例如:0-30)(检查不可接受的情况,例如 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 回答