javascript - 如何在 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.
有什么简单的方法可以做到这一点吗?
解决方案
通过将数组保留为哈希映射,一个有效的解决方案如下。但是请记住,除非它是一个字符串,否则数字不能以 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));
推荐阅读
- aframe - 相当于 A-Frame 中的“检查模式”
- python - Python:检查数组字典依赖关系并检查它是否是循环的
- tensorflow - 如何使用张量流 saved_model.load
- python - 监控 Reddit 提交的新/编辑评论的最佳方式是什么?
- java - Redis PubSub 与 Jedis 重新连接
- node.js - 访问没有身份验证的 mongodb 数据库给出错误
- google-cloud-platform - 谷歌云功能“最大功能实例”经常超过
- java - 每次我运行我的代码时,我都会收到同样的错误
- python - Python to exe with pyinstaller using anaconda 是一个巨大的文件
- ui-automation - 如何基于 Cypress 中的黄瓜而不是 JSON 报告生成 HTML 报告