设arr = 2,3,5,7,9 arrMath.floor(Math.random() * arr.length)
arr[Math.floor(Math.random() * arr.length)] //5
arr[Math.floor(Math.random() * arr.length)] //2
arr[Math.floor(Math.random() * arr.length)] //9
arr[Math.floor(Math.random() * arr.length)] //9
9在这里重复,我如何确保随机数不会重复。
发布于 2020-03-31 14:02:12
解决方案1-检查是否重复
var min_number = 0;
var max_number = 100;
var numbers_to_generate = 10;
// Make sure numbers_to_generate < (max_number - min_number + 1);
var numbers = [];
while(numbers.length < numbers_to_generate){
var number = Math.floor(Math.random() * (max_number - min_number)) + min_number;
if(numbers.indexOf(number) === -1) {
numbers.push(number);
}
}
console.log(numbers);
解决方案2-从数字池中随机获取
var min_number = 0;
var max_number = 100;
var numbers_to_generate = 10;
// Make sure numbers_to_generate < (max_number - min_number)
var numbers = [];
var pool = Array.from(new Array(max_number-min_number), (x,i) => i + min_number);
while(numbers.length < numbers_to_generate){
var number = pool.splice(Math.floor(Math.random() * (pool.length-1)), 1)[0];
numbers.push(number);
}
console.log(numbers);
发布于 2020-03-31 14:26:08
从数组中删除重复项的一些技巧/方法。
let arr = [1, 1, 2, 3, 3, 4, 5, 5, 6];
let uArr1 = [...new Set(arr)];
console.log(uArr1);
let uArr2 = arr.filter((val, ind) => arr.indexOf(val) === ind);
console.log(uArr2);
发布于 2020-03-31 14:32:29
这就是你想要的吗?
let arr = [2,3,5,7,9]
console.log("This is your arr " + arr)
let unique = [];
let numbers_to_generate = arr.length;
let index;
let i = 0;
while(unique.length != numbers_to_generate){
unique.push(arr[Math.floor(Math.random() * arr.length)]);
index = arr.indexOf(unique[i]);
arr.splice(index, 1)
i++
}
console.log("This is unique " + unique)
在这之后,你只需要得到唯一的第一个元素,我真的不知道你想要做什么
https://stackoverflow.com/questions/60944277
复制相似问题