首页 > 解决方案 > 如何在 JavaScript/jQuery 中获取没有重复数字的随机数?

问题描述

更新:数字可以从零开始。

我想要一个像

function getRandomNumber(n){
  ...
}

我希望它得到一个带有n数字的数字,而没有一个数字是重复的。例如:

getRandomNumber(3) -> 152 is what I want.
getRandomNumber(1) -> 6 is what I want.
getRandomNumber(6) -> 021598 is what I want. It can start with zero.
getRandomNumber(5) -> 23156 is what I want.
getRandomNumber(3) -> 252 is not because it has two 2.
getRandomNumber(5) -> 23153 is not because it has two 3.

有什么简单的方法可以做到这一点吗?

标签: javascript

解决方案


通过将数组保留为哈希映射,一个有效的解决方案如下。但是请记住,除非它是一个字符串,否则数字不能以 0 开头。

function getRandomNumber(n){
    var a = [],
        x = ~~(Math.random()*10),
        r = 0;
    while (n) {
      a[x] === void 0 && (a[x] = true, r += x*Math.pow(10,n-1), --n);
      x = ~~(Math.random()*10);
    }
    return r;
}

console.log(getRandomNumber(3));
console.log(getRandomNumber(4));
console.log(getRandomNumber(5));
console.log(getRandomNumber(6));
console.log(getRandomNumber(7));


推荐阅读