62 文字 (az、AZ、0-9) の配列を使用する何らかのエンコード関数を作成し、乱数を使用してこれらの 1 つにアクセスします。
しかし、私がそれを使用すると、多くの文字が返され、数字と同じくらい多くの文字が必要になります(数字の可能性は10/62対50/62であるため、これも論理的です)
誰かがランダムを生成する関数を教えてくれませんか数値ですが、52 ~ 62 の間の値を取得する可能性が高く、52 未満の値を取得する可能性が高くなります。
3045 次
4 に答える
4
これにより、50/50 の確率で数字が得られます。
var letters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
var digits = "0123456789";
function getRandomChar() {
var r = Math.random();
return r < 0.5 ? letters.charAt(Math.floor(r*letters.length*2)) : digits.charAt(Math.floor((r-0.5)*digits.length*2));
}
于 2012-05-22T19:04:45.513 に答える
0
最初に 0 と 1 (表または裏) を選択します。1 の場合は、数値のみを返す別の関数を使用します。それ以外の場合は、文字のみを返す別の関数で文字を返します。
于 2012-05-22T19:01:09.537 に答える
0
たとえば 0..100 の間のランダムな値を取得したいが、50..60 で発生する可能性が高い場合は、式に 2 番目のランダム関数を追加する必要があります。
var rnd = Math.round(Math.random()*( 100 - 50 ) + Math.round(Math.random()*10));
この場合、最初の乱数は 0 から 50 の間で生成され、その後 60 まで大きくなる可能性があります。
52-62 の場合、次のようになります。
var rnd = Math.round(Math.random()*( 52 ) + Math.round(Math.random()*10));
于 2012-05-22T19:00:58.417 に答える
0
function getRandomIndex(){
// flip a coin... 50% chance the if occurs, 50% chance the else occurs
if(Math.floor(Math.random() * 2) == 0){
// return the number random function, values 52 and up
return Math.floor(Math.random() * 10) + 52;
}
else{
// return the character random function, values 0 to 51
return Math.floor(Math.random() * 52);
}
}
于 2012-05-22T19:01:06.643 に答える