首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何从JavaScript中的数字数组生成非重复随机数?

如何从JavaScript中的数字数组生成非重复随机数?
EN

Stack Overflow用户
提问于 2020-03-31 13:57:37
回答 4查看 93关注 0票数 1

设arr = 2,3,5,7,9 arrMath.floor(Math.random() * arr.length)

代码语言:javascript
运行
复制
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在这里重复,我如何确保随机数不会重复。

EN

回答 4

Stack Overflow用户

发布于 2020-03-31 14:02:12

解决方案1-检查是否重复

代码语言:javascript
运行
复制
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-从数字池中随机获取

代码语言:javascript
运行
复制
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);
票数 0
EN

Stack Overflow用户

发布于 2020-03-31 14:26:08

从数组中删除重复项的一些技巧/方法。

代码语言:javascript
运行
复制
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);

票数 0
EN

Stack Overflow用户

发布于 2020-03-31 14:32:29

这就是你想要的吗?

代码语言:javascript
运行
复制
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)

在这之后,你只需要得到唯一的第一个元素,我真的不知道你想要做什么

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60944277

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档