Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
香草JavaScript:如何使两个随机数中的第二个数始终高于第一个数_Javascript - Fatal编程技术网

香草JavaScript:如何使两个随机数中的第二个数始终高于第一个数

香草JavaScript:如何使两个随机数中的第二个数始终高于第一个数,javascript,Javascript,我正在尝试做一个儿童数学测验,到目前为止,我已经能够做到以下几点:让两个0到10之间的随机数出现;使+或-运算符随机;如果答案是错的或正确的,给予反馈;记分; 不过,我面临的一个问题是,在某些情况下,运算符将是-并且第二个随机数将大于第一个随机数,从而得到一个数字答案。从下面的代码中可以看出,我尝试在if语句中使用if语句,在if语句中使用while语句。两者都不能产生预期的结果。 我很感激任何关于如何解决我的问题的建议 代码: document.getElementById(“button1”

我正在尝试做一个儿童数学测验,到目前为止,我已经能够做到以下几点:让两个0到10之间的随机数出现;使+或-运算符随机;如果答案是错的或正确的,给予反馈;记分; 不过,我面临的一个问题是,在某些情况下,运算符将是-并且第二个随机数将大于第一个随机数,从而得到一个数字答案。从下面的代码中可以看出,我尝试在if语句中使用if语句,在if语句中使用while语句。两者都不能产生预期的结果。 我很感激任何关于如何解决我的问题的建议

代码:

document.getElementById(“button1”).addEventListener(“单击”,问题);
var plusMinus=document.getElementById(“plusMinus”);
var计数器=0;
函数问题(){
var startButton=document.getElementById(“button1”);
var number1=document.getElementById(“number1”);
var number2=document.getElementById(“number2”);
var decider=Math.random();
计数器++;

if(decider您可以检查它是否为负数。检查
number2
是否大于
number1
然后交换它们

大概是这样的:

if(plusMinus.textContent == '-' && number2.textContent > number1.textContent) {
    var a = number2.textContent;
    number2.textContent = number1.textContent;
    number1.textContent = a;
}
当您调用
answer()
时,您将再次获得值。因此,您交换顺序的事实不会对其余逻辑产生任何影响,也不会得到任何负数

片段

document.getElementById(“button1”).addEventListener(“单击”,问题);
var plusMinus=document.getElementById(“plusMinus”);
函数问题(){
var startButton=document.getElementById(“button1”);
var number1=document.getElementById(“number1”);
var number2=document.getElementById(“number2”);
var decider=Math.random();
button1.textContent=“再次”;
number1.textContent=Math.floor(Math.random()*11);
number2.textContent=Math.floor(Math.random()*11);
if(决策者编号1.textContent){
console.log('swapped')
var a=number2.textContent;
number2.textContent=number1.textContent;
number1.textContent=a;
}
};
document.getElementById(“按钮2”)。addEventListener(“单击”,回答);
函数答案(){
var num1=parseInt(document.getElementById(“number1”).textContent,10);
var num2=parseInt(document.getElementById(“number2”).textContent,10);
var answer=parseInt(document.getElementById(“userAnswer”).value,10);
var feedBack=document.getElementById(“feedBack”);
var scoreReport=document.getElementById(“分数”);
var totalScore=0;
如果(plusMinus.textContent==“+”){
如果(答案==num1+num2){
feedBack.textContent=“干得好!”;
}否则{
feedBack.textContent=“再试一次!”;
}
}
否则{
如果(答案==num1-num2){
feedBack.textContent=“干得好!”;
}else{feedBack.textContent=“重试!”;
}

对于(count=0;count您可以使用第一个随机数作为创建第二个随机数的参数。例如:

var num1 = Math.floor(Math.random()*11);
var num2 = num1+ Math.floor(Math.random()*(10-num1));
…或类似的。只需创建一个较小的范围并将第一个数字添加到结果中,在第一个随机数和10之间生成一个随机数

附录


通过采用这种方法,您确实会扭曲问题中出现较大数字的可能性。@Joel的答案不会因此受到影响。

这里有一个通用的解决方案,您可以使用(它并不完全适用于您当前的代码示例,但我相信您一定能够使其正常工作):


只是一个建议:你应该考虑把你的状态存储在其他地方,让DOM反映这个状态。你好,杰夫,谢谢你的建议,通常我把我的HTML、CSS和JS分开,但是为了使它更容易,我只是在测试itJoel时把它全部放在一起,谢谢你的回答,它帮了我很多。但是,如果你运行SNI的话,有一件事。ppet足够长(点击“再次”足够多次),当第一个数字是10时,你会遇到一个问题,例如,我有一个6-10的问题,我想知道为什么会这样。但后来我意识到JS将它视为6和1,即使它是10。似乎JS将它视为字符串(?)所以我修改了你的代码如下,到目前为止它还没有出现问题,即使涉及到a-和a 10:@Obi wan只需做一个
parseInt
:)是的,Joel,这就是我要说的。我还是一个写评论的新手,我花了一段时间来澄清我的想法。谢谢JoelHello,谢谢你的帮助。我尝试了你的代码,正如@Connorcmakee所说,更大的数字更普遍。当我还添加了parseInt()时,使用Joel的答案似乎有效。
var num1 = Math.floor(Math.random()*11);
var num2 = num1+ Math.floor(Math.random()*(10-num1));
// create a random Boolean that determines whether it's minus
var isMinus = !Math.round(Math.random());

// create an array of two random numbers from 0-10
var numbers = [Math.floor(Math.random()*11), Math.floor(Math.random()*11)];

// if isMinus, sort numbers ascending, else keep as-is
numbers = isMinus ? numbers.sort().reverse() : numbers;

// assign the proper sign to the DOM element
plusMinus.textContent = isMinus ? '-' : '+';

// assign the proper array elements to the DOM elements
number1.textContent = numbers[0];
number2.textContent = numbers[1];