5 回答
TA贡献1811条经验 获得超5个赞
你不应该循环,而只是一般地做:
x = Math.floor(Math.random() * 90) + 10 y = Math.floor(Math.random() * (x - 10)) + 10
TA贡献1805条经验 获得超10个赞
希望这会回答你的问题
function randomNumbers() {
var temp_list;
temp_list = [
Math.floor(Math.random() * 90 + 10),
Math.floor(Math.random() * 90 + 10)
];
temp_list.sort();
var x = temp_list[1];
var y = temp_list[0];
document.getElementById("var1").innerHTML = x;
document.getElementById("var2").innerHTML = y;
var z = parseInt(x) - parseInt(y);
document.getElementById("var3").innerHTML= z;
}
如果您不想在 x 和 y 中使用相同的值:
function randomNumbers() {
var temp_list;
do {
temp_list = [
Math.floor(Math.random() * 90 + 10),
Math.floor(Math.random() * 90 + 10)
];
} while (temp_list[0] == temp_list[1])
temp_list.sort();
var x = temp_list[1];
var y = temp_list[0];
document.getElementById("var1").innerHTML = x;
document.getElementById("var2").innerHTML = y;
var z = parseInt(x) - parseInt(y);
document.getElementById("var3").innerHTML = z;
}
TA贡献1848条经验 获得超2个赞
您需要为您的数字引入一个偏移量 - 对于第一个数字,它从 10 开始;对于第二个数字,所以它从第一个数字开始。
let min = 10,
first = Math.floor(Math.random() * (100 - min)) + min,
second = Math.floor(Math.random() * (100 - first)) + first;
实际上这允许两个数字相等。否则,如果第一个数字是 100,那么第二个数字就什么也不是了。
TA贡献1868条经验 获得超4个赞
这可能会解决您的问题:
window.onload= function() {
var x = Math.floor(Math.random() * 100);
while (x < 10) {
x = Math.floor(Math.random() * 100)
}
var y = Math.floor(Math.random() * 100);
while (y < 10 || y>x) {
y = Math.floor(Math.random() * 100)
};
document.getElementById("var1").innerHTML = x;
document.getElementById("var2").innerHTML = y;
var z = parseInt( x) - parseInt(y);
document.getElementById("var3").innerHTML= z
};
TA贡献1752条经验 获得超4个赞
让我们来看看这里的案例
首先,您将 x 设置为 0 到 100 之间的任何值,然后,如果该值恰好小于 10,则您不断将其再次设置为另一个可能介于 0 到 100 之间的随机数,直到它大于 10
首先,如果每次结果都小于 10,它可能会永远循环(无穷大不太可能,但在可能的范围内),如果你想获得 10-100 之间的随机数,只需加十并取走10 的乘法,比如
Math.floor(Math.random() * (100-10)) + 10
反正你也不需要 while 循环
无论如何,一旦 x 被设置为 10 到 100 之间的值,让我们看看您还在做什么,让我们假设 x 结果为 90
然后,您将 y 设置为 0 到 100 之间的任意值(一开始),假设结果为 3
然后你先检查它是否小于 10,然后继续添加。同样,首先,您可以使用上面的相同方程式得到 10-100 之间的值,但无论如何,我们假设 y 的值为 95
问题是,将它保持在 10 以下的 while 循环与小于 x 的条件放在一起,这意味着如果它首先大于 10,则 while 循环的第二个条件是保持它小于x, 永远不会被执行,所以如果 y 以 39 或 11 到 38 之间的任何值开始,那么 while 循环中什么也不会发生,因为小于 10 的条件从未满足
所以如果你想保持 while 循环的情况,你可以将两个 while 循环相互嵌套,首先保持它低于 x,然后在内部的循环中,也保持它高于 10
但是您不必为此使用 while 循环。
首先将 x 的值设置为
var x = Math.floor(Math.random() * (100-10)) + 10
然后,您只需将 y 保持在 10 到 x 的范围内,因此对这些起始值和结束值使用相同的公式
var y = Math.floor(Math.random() * (x - 10)) + 10
添加回答
举报