生成随机坐标(不包括某些特定坐标)
Generate random coordinates (excluding some specific ones)
我有一个多维数组,我将其用作一个非常简单的坐标系。为了生成随机坐标,我想出了一个非常简单的函数:
var coords = [
[1,0,0,1,0,0,0,0,1,0,0,0,1,1,0,1,1,1,1,1,1,1,0,1],
[0,0,0,1,1,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,1],
[1,0,1,1,1,1,1,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,1],
[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,1,1],
[1,1,1,0,1,1,0,0,1,1,0,1,1,1,1,1,1,0,0,1,1,0,1,1],
[1,1,1,0,1,1,0,0,1,1,0,1,1,1,1,0,0,0,0,1,1,0,1,1],
[0,0,0,0,1,1,0,0,1,1,0,1,1,1,1,0,0,1,0,1,1,0,1,1],
[1,0,1,0,1,1,1,1,0,0,0,1,1,1,0,0,0,1,0,1,1,0,1,1]
];
function getRandomInt( min, max ) {
return Math.floor( Math.random() * (max - min + 1) ) + min;
}
function randomCoords() {
var x, y;
do {
x = getRandomInt( 0, coords[ 0 ].length - 1 );
y = getRandomInt( 0, coords.length - 1 );
}
while ( coords[ y ][ x ] !== 1 );
return [ x, y ];
}
正如您可能看到的,我只想得到数组中1
的随机坐标。虽然这是有效的,但我想知道是否有更好/更有效的方法可以做到这一点?有时(尤其是在我的坐标系中有很多0
的情况下)需要一点时间才能返回值。在那段时间里(据我所知)javascript不能做任何其他事情。。。所以一切都会暂停。。。
如果您只想获得一到两次随机坐标,那么您的解决方案是最好的。
如果你经常使用它,你可以把1的坐标放在一个数组中。因此,您只需要在数组上使用random()一次coordPairs1[Math.floor(Math.random() * coordPairs1.length)]
var coords = [
[1,0,0,1,0,0,0,0,1,0,0,0,1,1,0,1,1,1,1,1,1,1,0,1],
[0,0,0,1,1,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,1],
[1,0,1,1,1,1,1,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,1],
[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,1,1],
[1,1,1,0,1,1,0,0,1,1,0,1,1,1,1,1,1,0,0,1,1,0,1,1],
[1,1,1,0,1,1,0,0,1,1,0,1,1,1,1,0,0,0,0,1,1,0,1,1],
[0,0,0,0,1,1,0,0,1,1,0,1,1,1,1,0,0,1,0,1,1,0,1,1],
[1,0,1,0,1,1,1,1,0,0,0,1,1,1,0,0,0,1,0,1,1,0,1,1]
];
// make coord-pairs:
var coordPairs1 = []
for(var x=0; x<coords[0].length; ++x) {
for(var y=0; y<coords.length; ++y) {
if(coords[y][x] == 1)
coordPairs1.push([x,y])
}
}
function randomCoords() {
return coordPairs1[Math.floor(Math.random() * coordPairs1.length)]
}
// Example:
document.body.innerHTML = randomCoords()
相关文章:
- 如何将页面上的所有电话号码更改为可点击链接,不包括特定类别的元素
- 将正则表达式重新分解为不包括空组
- 为什么从JSON文本到类型的转换不包括函数
- XMLHttpRequest调用不包括If Modified Since标头
- 控件坐标与组坐标不匹配
- 使用 JavaScript 执行一行 PHP(不包括 PHP 文件)
- 捆绑器不包括 .min 文件
- 与冒号(不包括冒号)之间的正则表达式单词匹配
- 包含特殊字符 (!,@,#,&) 不包括其他特殊字符
- Javascript RegEx:如何获取单引号之间的名称(不包括单引号)
- Javascript RegEx匹配URL's,但不包括图像
- Rails不包括用于javascript的require_tree
- 获取JS中特定路径的cookie,不包括根路径
- requireJS优化器不包括嵌套的require调用
- 不包括'+'和'&'正则表达式中的字符
- 如何获取html页面中所有p和h标记的值,不包括所有其他标记
- 使用javascript查找小数前的整数(不包括特殊字符)
- Javascript RegEx:在符号后获取1或2位数字(不包括该符号)
- 如何获取应用程序.js其中不包括压缩代码
- 生成随机坐标(不包括某些特定坐标)