我在HTML文件中有以下代码(见下文),它生成100000-999999之间的随机数(它工作正常)但我想确保它不重复自身。如何修改它或添加代码来执行此操作?
var randomnumber = Math.floor(Math.random()*999999) + 100000
document.write(randomnumber)
答案 0 :(得分:3)
您可以跟踪已使用的所有号码:
var numbers = [];
var randomnumber;
do {
randomnumber= Math.floor(Math.random()*999999) + 100000;
} while (numbers.includes(randomnumber));
numbers.push(randomnumber);
document.write(randomnumber)
如果ES6出现问题(array.prototype.includes
),您可以使用array.prototype.indexOf
:
// ...
do {
randomnumber= Math.floor(Math.random()*999999) + 100000;
} while (numbers.indexOf(randomnumber) !== -1);
// ...
答案 1 :(得分:-3)
它重复的概率很低。你可以假设它不会重复。
但是,如果重复对您至关重要,您可以保留所有生成值的缓存,然后在生成新值时随时检查它。
对于这种情况,你可以使用这样的东西。
var usedNumbers = []; // will store all the generated random numbers
var currNumber;
do {
currNumber= Math.floor(Math.random()*999999) + 100000;
} while (usedNumbers.includes(currNumber));
usedNumbers.push(currNumber); // add the random number to the list of used numbers
document.write(currNumber);