Javascript 生成唯一的6位代码js

Javascript 生成唯一的6位代码js,javascript,Javascript,我正在尝试使用JS生成6位代码 它必须包含3个数字和3个字符 这是我的密码 var numbers = "0123456789"; var chars = "acdefhiklmnoqrstuvwxyz"; var string_length = 3; var randomstring = ''; var randomstring2 = ''; for (var x = 0; x < string_length; x++) { var letterOrNumber = Math.f

我正在尝试使用JS生成6位代码

它必须包含3个数字和3个字符

这是我的密码

var numbers = "0123456789";
var chars = "acdefhiklmnoqrstuvwxyz";
var string_length = 3;
var randomstring = '';
var randomstring2 = '';
for (var x = 0; x < string_length; x++) {
    var letterOrNumber = Math.floor(Math.random() * 2);
    var rnum = Math.floor(Math.random() * chars.length);
    randomstring += chars.substring(rnum, rnum + 1);
}
for (var y = 0; y < string_length; y++) {
    var letterOrNumber2 = Math.floor(Math.random() * 2);
    var rnum2 = Math.floor(Math.random() * numbers.length);
    randomstring2 += numbers.substring(rnum2, rnum2 + 1);
}
var code = randomstring + randomstring2;
var numbers=“0123456789”;
var chars=“acdefhiklmnoqrstuvwxyz”;
变量字符串长度=3;
var randomstring='';
var randomstring2='';
对于(var x=0;x
代码结果将是3个字符+3个数字。。我想把这个值重新排列成随机值,包含相同的3个字符和3个数字


您可以使用6次的丁格尔循环,并逐个使用随机字符和随机数函数,同时递增1,虽然这不是一个好选项,但这也可能提供一些灵活性

function(count){
  var chars = 'acdefhiklmnoqrstuvwxyz0123456789'.split('');
  var result = '';
  for(var i=0; i<count; i++){
    var x = Math.floor(Math.random() * chars.length);
    result += chars[x];
  }
  return result;
}
函数(计数){
变量字符='acdefhiklmnoqrstuvwxyz0123456789'。拆分('';
var结果=“”;

对于(var i=0;i,您可以使用这样的函数(从)洗牌当前代码

您可以这样使用它:

alert(shuffle("StackOverflow".split('')).join(''));
是使用此代码更新的演示。

请尝试以下操作:

  var numbers = "0123456789";

  var chars= "acdefhiklmnoqrstuvwxyz";

  var code_length = 6;
  var didget_count = 3;
  var letter_count = 3;

  var code = '';

  for(var i=0; i < code_length; i++) {
     var letterOrNumber = Math.floor(Math.random() * 2);
     if((letterOrNumber == 0 || number_count == 0) && letter_count > 0) {
        letter_count--;
        var rnum = Math.floor(Math.random() * chars.length);
        code += chars[rnum];
     }
     else {
        number_count--;
        var rnum2 = Math.floor(Math.random() * numbers.length);
        code += numbers[rnum2];
     }
  }
var numbers=“0123456789”;
var chars=“acdefhiklmnoqrstuvwxyz”;
var代码_长度=6;
var didget_count=3;
var字母_计数=3;
var代码=“”;
对于(变量i=0;i0){
字母_计数--;
var rnum=Math.floor(Math.random()*字符长度);
代码+=字符[rnum];
}
否则{
数字_计数--;
var rnum2=Math.floor(Math.random()*number.length);
代码+=数字[rnum2];
}
}

我可能会注意到,这样的代码不应该被认为是真正随机的,因为底层函数可能是可预测的,这取决于运行在底层的javascipt引擎。

目前什么不是随机的?从一次运行到另一次运行的结果是否相同?随机和唯一不一定是同一回事……请查看JSFIDLE PLESEA我想做的是重新排列代码字符和编号@Jack我知道,但这是我的客户要求的:(你可以像while(I<6)一样使用while循环{调用random char I++,调用random number I++}或将其反转,这样你可以得到交替的字符和编号,希望能有所帮助
  var numbers = "0123456789";

  var chars= "acdefhiklmnoqrstuvwxyz";

  var code_length = 6;
  var didget_count = 3;
  var letter_count = 3;

  var code = '';

  for(var i=0; i < code_length; i++) {
     var letterOrNumber = Math.floor(Math.random() * 2);
     if((letterOrNumber == 0 || number_count == 0) && letter_count > 0) {
        letter_count--;
        var rnum = Math.floor(Math.random() * chars.length);
        code += chars[rnum];
     }
     else {
        number_count--;
        var rnum2 = Math.floor(Math.random() * numbers.length);
        code += numbers[rnum2];
     }
  }