我正在制作JavaScript算法,它生成简单的数学问题(问题),所有可能的组合都按随机顺序进行。
e.x。
1+2
3+5
7+2
3+1
有效的组合是加数字。问题是当我尝试生成带负号的数字时。算法生成的第一个数应该大于第二个数
e.x。
firstNumber(较大)-secondNumber(较低)
5-3
4-1
2-5(不可能)
不管怎么说,代码执行无限循环,我搞不懂。请提供工作示例的帮助。如果你有任何问题,请写在评论区。感谢您的帮助:)
<html>
<p id='plus10'></p>
<p id='minus10'></p>
<p id='plus100'></p>
<p id='minus100'></p>
<script>
arr2 = [];
var lastArr2 = [];
var num1, num2;
while(lastArr2.length < 121) {
arr2.push('<br>' + Math.round(Math.random() * 10) + '+' + Math.round(Math.random() * 10) + '=');
lastArr2 = removeDuplicates(arr2);
}
document.getElementById('plus10').innerHTML = (lastArr2.join(' '));
arr1 = [];
var lastArr1 = [];
while(lastArr1.length < 121) {
arr1.push('<br>' + Math.round(Math.random() * 100) + '+' + Math.round(Math.random() * 100) + '=');
lastArr1 = removeDuplicates(arr1);
}
document.getElementById('plus100').innerHTML = (lastArr1.join(' '));
arr3 = [];
var lastArr3 = [];
while(lastArr3.length < 121) {
gen();
}
function gen() {
//minus function
num1 = Math.round(Math.random() * 10);
num2 = Math.round(Math.random() * 10);
if(num1 < num2) {
gen();
} else {
lastArr3 = removeDuplicates(arr3);
arr3.push(num1 + '-' + num2 + '=');
}
}
document.getElementById('minus10').innerHTML = (lastArr3.join(' '));
function removeDuplicates(arr) {
let unique_array = []
for(let i = 0; i < arr.length; i++) {
if(unique_array.indexOf(arr[i]) == -1) {
unique_array.push(arr[i])
}
}
return unique_array
}
</script>
</html>https://stackoverflow.com/questions/47849878
复制相似问题