5

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;

コードの結果は3文字+ 3つの数字になります..この値を再配置して、同じ3文字と3つの数字を含むランダムな値にします

http://jsfiddle.net/pgDFQ/101/

4

4 に答える 4

2

これがあなたのためのコードです

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;
}
于 2013-08-15T22:08:09.093 に答える
2

このような関数を使用して現在のコードをシャッフルできます(この回答から)

//+ Jonas Raoni Soares Silva
//@ http://jsfromhell.com/array/shuffle [v1.0]
function shuffle(o){ //v1.0
    for(var j, x, i = o.length; i; j = Math.floor(Math.random() * i), x = o[--i], o[i] = o[j], o[j] = x);
    return o;
};

次のように使用できます。

alert(shuffle("StackOverflow".split('')).join(''));

これは、このコードを使用した更新されたデモです。

于 2013-08-15T22:09:19.040 に答える
1

あなたができることは、6回からディングルループを使用し、ランダムな文字と乱数関数を1つずつ使用しながら、1ずつインクリメントすることです。これは良いオプションではありませんが、柔軟性も提供します

于 2013-08-15T22:04:32.393 に答える
1

これを試して:

  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];
     }
  }

そのようなコードは真にランダムであると見なすべきではないことに注意してください。下で実行されている javascipt エンジンに応じて、下にある関数が予測可能になる可能性があるからです。

于 2013-08-15T22:18:53.313 に答える