【发布时间】:2015-09-29 21:42:59
【问题描述】:
我正在编写一个程序,它在0 和1 之间选择一个随机数,然后进入一个while 循环,直到随机数生成器选择一个大于.5 的值。每次我运行程序时,程序都会返回0 并无限循环直到崩溃。为什么会出现这种情况? Math.floor(Math.random())最终不应该选择比.5更高的数字吗?
var randomNumber = Math.floor(Math.random());
while(randomNumber < .5) {
var name = prompt("Do you want to play a game? Like checkers or something?");
if (name === "Yes") {
console.log("Good jorb!");
} else if(name === "No.") {
console.log("Go away!!!!!");
else {
console.log("I have no idea");
}
var randomNumber = Math.floor(Math.random());
}
【问题讨论】:
-
我建议,如果您希望您的帖子被认真对待,请不要无缘无故地骂人。
-
第二个
var randomNumber = ...应该是randomNumber = ... -
我对您要实现的总体目标感到有些困惑。但是,我可以告诉你,
while循环永远不会按所写的那样运行。Math.floor将数字下降到最接近的整数。Math.random返回一个介于 0 和 1 之间的数字,不包括 1。这意味着Math.floor(Math.random())将始终为 0,因此根据需要执行循环中的任何操作,它永远不会超过 0.5。 -
如果你想测试不同的大小写组合,为什么不
if (name.toUpperCase() === 'YES')?如果你想允许一个可选的句号,那么也许是一个不区分大小写的正则表达式:if (/^(yes|yup)\.?$/i.test(name))- 那个单一的 if 测试将取代你的 all... -
我正在努力做到这一点,因此确认提示将随机循环,直到 math.random 在 0 到 1 @DLH 的范围内选择一个大于 0.5 的数字
标签: javascript if-statement random while-loop infinite-loop