【发布时间】:2016-03-10 04:17:51
【问题描述】:
有什么简单的方法可以生成不等于某些值的随机值
例如我想生成一个介于 1 到 10 之间的值
Math.floor(Math.random() * 10) + 1;
我希望它不等于 3,4,7
怎么办?谢谢
【问题讨论】:
有什么简单的方法可以生成不等于某些值的随机值
例如我想生成一个介于 1 到 10 之间的值
Math.floor(Math.random() * 10) + 1;
我希望它不等于 3,4,7
怎么办?谢谢
【问题讨论】:
尝试定义不应返回的数字数组,使用Array.prototype.indexOf() 仅过滤不包含在包含3、4,7 的数组中的 1 到 10 之间的数字
var n = [3, 4, 7];
function rand(not) {
var r = Math.floor(Math.random() * 10) + 1;
return not.indexOf(r) === -1 ? r : rand(not)
}
console.log(rand(n))
或者,通过定义仅包含不是3、4, 或7 的数字的数组来进行逆过程
var n = [1, 2, 5, 6, 8, 9, 10];
function rand(arr) {
var r = Math.floor(Math.random() * arr.length);
return arr[r]
}
console.log(rand(n))
【讨论】: