【发布时间】:2016-03-27 03:03:43
【问题描述】:
我正在开发一个扫雷 Web 应用程序,我正在尝试生成 10 个具有唯一位置 ID (1-100) 的地雷。我编写了一个函数来执行此操作,并将 10 个数字记录到一个名为 numbers 的数组中。但是每次我运行程序时,它都会产生 10 个从 1 到 100 的相同数字。有谁知道我做错了什么? (更新:当我将循环从 while 更改为 do...while 时它起作用了,但现在的问题是为什么要修复它?)
这是我的 jQuery 代码:
var chooseMines = function(num) {
var temp,bool,numbers = [];
for(i = 1; i <= 10; i++) {
do
{
bool = 0;
temp = Math.floor(100 * Math.random()) + 1;
for(j = 0; j < numbers.length; j++) {
if(numbers[j] === temp)
{
bool = 1;
}
}
} while(bool)
numbers.push(temp);
}
window.confirm(numbers);
return numbers;
};
这是我的旧js:
var chooseMines = function(num) {
var temp,bool = 1,numbers = [];
for(i = 1; i <= 10; i++) {
while(bool)
{
bool = 0;
temp = Math.floor(100 * Math.random) + 1;
for(j = 0; j < numbers.length; j++) {
if(numbers[j] === temp)
{
bool = 1;
}
}
}
numbers.push(temp);
}
window.confirm(numbers);
return numbers;
};
【问题讨论】:
-
似乎返回包含
NaN的数组? ,还有Math.random没有被调用? -
为什么将
bool设置为1和0而不仅仅是使用true和false? -
因为 1 和 0 打字比较快,而且我不擅长打字
-
Math.random是一个函数,所以必须调用它Math.random() -
我刚刚在问题中解决了这个问题
标签: javascript jquery random