Javascript 为什么以下短ID生成器在特定的迭代次数后总是暂停

Javascript 为什么以下短ID生成器在特定的迭代次数后总是暂停,javascript,Javascript,我正在写我自己的短Id生成器。在测试预期的碰撞次数时遇到一些问题,脚本似乎总是在一定次数的迭代后暂停。它打印3.699999999997%碰撞=0(即在37000000次迭代之后),然后在打印3.8%碰撞=0之前暂停很长时间 我真的不知道为什么会这样 var alreadyExistsCounter = 0; var oneMillion = 1000000; var iterations = oneMillion * 100; var ALPHABET = '23456789abdegjkmn

我正在写我自己的短Id生成器。在测试预期的碰撞次数时遇到一些问题,脚本似乎总是在一定次数的迭代后暂停。它打印3.699999999997%碰撞=0(即在37000000次迭代之后),然后在打印3.8%碰撞=0之前暂停很长时间

我真的不知道为什么会这样

var alreadyExistsCounter = 0;
var oneMillion = 1000000;
var iterations = oneMillion * 100;
var ALPHABET = '23456789abdegjkmnpqrvwxyz';
var hash = {};
var ID_LENGTH = 10;

var generate = function() {
        var rtn = '';
        for (var i = 0; i < ID_LENGTH; i++) {
        rtn += ALPHABET.charAt(Math.floor(Math.random() * ALPHABET.length));
    }
    return rtn;
}

for (var i = 0; i < iterations;i++){

    var sh = generate();

    if (hash[sh]){ 
        alreadyExistsCounter = alreadyExistsCounter +1;
    }
    hash[sh] = true;
    if (i % 100000 === 0){
        var pct = i / iterations * 100;
        console.log( pct + '% clashes = ' + alreadyExistsCounter );
    }
}
var-alreadyexistsconter=0;
var One000000=1000000;
var迭代次数=一百万*100;
变量字母表='23456789abdegjkmnpqrvwxyz';
var hash={};
变量ID_长度=10;
var generate=function(){
var rtn='';
对于(变量i=0;i