从2个数组中随机选择整数,直到condition为真
Select random Integers from 2 arrays until condition is true
我想知道写一个函数的最有效的方法是什么,它接受两个随机整数数组,并在找到一对匹配的整数时终止。
在下面的例子中,有两个数组,一个比另一个大。较大的数组包含可能的被除数,较小的数组包含可能的除数。我想让这个函数一直计算,直到找到一对可除且无余数的被除数和被除数。
的例子:
var listDivident = _.shuffle(_.range(1, 101));
var listDivisor = _.shufle(_.range(1, 11));
randomMatch = function (listDivident, listDivisor) {
/* until ((listDivident % listDivisor !== "undefined")
&& (listDivident % listDivisor === 0) {
...
}
*/
return {
matchDivident: matchDivident,
matchDivisor: matchDivisor
};
};
在JS中是否有类似于"until"函数或结构的东西?
谢谢你的帮助!Vin
除非您的数组非常大,否则您可以简单地先生成所有有效的对,然后随机选择一个:
var pairs = [];
_.each(listDivident, function(a) {
_.each(listDivisor, function(b) {
if(!(a % b))
pairs.push([a, b])
})
});
result = _.shuffle(pairs)[0];
你可以通过循环until找到你需要的东西来实现你所说的"until":
var listDivident = _.shuffle(_.range(1, 101));
var listDivisor = _.shufle(_.range(1, 11));
randomMatch = function (listDivident, listDivisor) {
var i = 0,
found = false,
dividentLength = listDivident.length,
divisorLength = listDivisor.length,
matchDivident = null,
matchDivisor = null;
while (!found && i < dividentLength && i < divisorLength) {
if (listDivident[i] % listDivisor[i] === 0) {
matchDivident = listDivident[i];
matchDivisor = listDivisor[i];
found = true;
} else {
i++;
}
}
return {
matchDivident: matchDivident,
matchDivisor: matchDivisor
};
};
EDIT:之后,用整个数组调用randomMatch()
:
alert(randomMatch(listDivident, listDivisor));
相关文章:
- 同步调用,直到用户通过angular验证为访问者
- 固定位置菜单时滚动,直到它击中一个相对容器的底部
- 正在等待呈现图表,直到加载数据为止
- Javascript没有't更新DOM,直到用户交互
- 设置随机数,然后每5秒随机减少一次,直到达到0(javascript)
- 避免在if condition-Javascript中使用函数
- .value返回字符串,直到我将其保存到变量
- 暂停函数执行流程,直到ajax请求完成
- 第一个字第一个字符第二个字第二个字符,一直到数组结束
- 如何使用angular _ design保持全局当前用户直到注销
- 服务器发送的事件直到脚本完成才更新
- 延迟代码执行,直到下载完成
- Javascript重定向循环直到成功
- Jquery:直到寄存器打开的时间计数器
- regex来构建字符串,直到遇到第N个匹配项
- 轮询:获取请求直到结果合适
- Jssor滑块停留在第一个图像上,直到我单击它
- 延迟单击事件,直到AJAX完成
- 从2个数组中随机选择整数,直到condition为真
- 创建元素直到condition为真