2014-01-20 2 views
1

Я хочу знать, как мы можем получить случайный математический оператор для использования и обработки в вопросе математической викторины.Как получить случайный математический оператор для quiz qustion в javascript

Случайный вопрос задан пользователю для решения, вопрос имеет только два числа для решения любого из сложения, вычитания, умножения или деления.

У меня есть этот код для генерации двух случайных чисел.

HTML

<div id="num1"></div><!--end of num1--> 
    <div id="num2"></div><!--end of num2--> 
    <div id="operator"></div><!--end of operator--> 
    <div id="answer"></div><!--end of answer--> 
    <button onclick="New()">New</button> 

Javascript

function New(){ 
num1=document.getElementById("num1"); 
num2=document.getElementById("num2"); 
rnum1 = Math.floor((Math.random()*100)+1); 
rnum2 = Math.floor((Math.random()*100)+1); 
num1.innerHTML=rnum1 
num2.innerHTML=rnum2  
} 

Как я могу генерировать случайный оператор из + - */использовать и обрабатывать в коде как

operator.innerHTML = '+'; 
answer.innerHTML = rnum1 + rnum2; 

ответ

3

Вы можете сделать это :

var operators = [{ 
     sign: "+", 
     method: function(a,b){ return a + b; } 
    },{ 
     sign: "-", 
     method: function(a,b){ return a - b; } 
    }]; 

var selectedOperator = Math.floor(Math.random()*operators.length); 

operators[selectedOperator].sign     //this will give you the sign 
operators[selectedOperator].method(rnum1, rnum2) //this will give you the answer 
+1

+1 Для приятного и безопасного решения. Благодарю. –

2

Определить массив операторов:

var ops=['+','-','*','/']; 

//random operator 

var opindex = Math.random()*4; //good that your rnum2 cannot be zero 
var operator = ops[opindex]; 

//calculate the expected result: 

var res; 
switch (opindex){ 
    case 0: res=rnum1+rnum2; break; 
    case 1: res=rnum1-rnum2; break; 
    case 2: res=rnum1*rnum2; break; 
    case 3: res=rnum1/rnum2; break; 
} 
+0

+1 для приятного решения, но поскольку Дерек ответил на 1-й, я принимаю этот ответ. Я ценю ваше время и решение. –

0

Пример:

var operators = ['+','-','*','/']; 

function New(){ 
    num1=document.getElementById("num1"); 
    num2=document.getElementById("num2"); 
    oper=document.getElementById("operator"); 
    answer=document.getElementById("answer"); 
    rnum1 = Math.floor((Math.random()*100)+1); 
    rnum2 = Math.floor((Math.random()*100)+1); 
    op = operators[Math.floor(Math.random()*4)]; 
    num1.innerHTML=rnum1; 
    num2.innerHTML=rnum2; 
    oper.innerHTML=op; 
    answer.innerHTML = eval(rnum1 + op + rnum2); 
} 
+0

Вы не можете вычислить ответ, выполнив его таким образом. –

+0

Вы * можете * использовать 'eval', но это не считается безопасной практикой. –

+0

Это безопасно в этом случае –

0

Я знаю, что я немного опоздал на вечеринку, но я думал, что я разделю миленький хэш Я написал, что для ясности использует функции стрелок ES6.

const OPMAP = { 
    '*': (n1, n2) => n1 * n2, 
    '/': (n1, n2) => n1/n2, 
    '+': (n1, n2) => n1 + n2, 
    '-': (n1, n2) => n1 - n2 
} 

Просто позвоните OPMAP [оператор], чтобы получить анонимную функцию и OPMAP [оператор] (n1, n2), чтобы получить результат.

Смежные вопросы