有没有简单的方法来生成一个不等于某些值的随机值
例如,我希望生成1到10之间的值
Math.floor(Math.random() * 10) + 1;
我希望它不等于3,4,7
怎么办?谢谢
答案 0 :(得分:3)
尝试定义不应返回的数字数组,使用Array.prototype.indexOf()
仅过滤1到10之间的数字,这些数字不在包含3
,4,
7
的数组中
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))