任意の桁数の数字の文字列をランダムに作成したい場合のJavaScriptプログラムの思案です。
方法論としては、2つ考えました。
ひとつは、ランダムな数字を発生させ、それをもとにする方法です。
もうひとつは、数字の格納された配列を用意し、そこからランダムに取り出した数字を組み合わせる方法です。
では、前者から紹介します。
方法1 ランダムな数字を発生させ、それをもとにする方法
3桁の数字をランダムに生成する
var min = 1000 ;
var max = 1999 ;
var NUM = Math.floor( Math.random() * (max + 1 - min) ) + min ;
var NUM2 = ( '' + NUM ).slice( -3 );
この方法では、まず、1000から1999までの間でランダムな数字を発生させます(NUM)。
そして、下3桁の数字を切り取ります(NUM2)。
この方法のいいところは、たとえば「007」のような、桁数に満たない部分をゼロで埋める(いわゆるゼロパディング)の数字も生成できることです。
また、桁数を増やすのも簡単です。
10桁の数字をランダムに生成する
var min = 10000000000 ;
var max = 19999999999 ;
var NUM = Math.floor( Math.random() * (max + 1 - min) ) + min ;
var NUM2 = ( '' + NUM ).slice( -10 );
ここで、たとえば、document.write();を使うと、かんたんに実行結果を確認できます。
var min = 10000000000 ;
var max = 19999999999 ;
var NUM = Math.floor( Math.random() * (max + 1 - min) ) + min ;
var NUM2 = ( '' + NUM ).slice( -10 );
document.write(NUM2);
実行結果1:4721748053
実行結果2:0028430625 ← きちんと数列の先頭に「0」が付きます。
方法2 数字が文字として格納された配列を用意し、そこからランダムに取り出した数字を組み合わせる方法
4桁の数字をランダムに生成する
var arr = [ "1", "2", "3", "4", "5", "6", "7", "8", "9" ] ;
var K1 = arr[ Math.floor( Math.random() * arr.length ) ] ;
var K2 = arr[ Math.floor( Math.random() * arr.length ) ] ;
var K3 = arr[ Math.floor( Math.random() * arr.length ) ] ;
var K4 = arr[ Math.floor( Math.random() * arr.length ) ] ;
var NUM = K1+K2+K3+K4;
この方法では、まず、1から9の数字が文字として格納された配列を作ります(arr)。
つぎに、千の位の文字を、配列からランダムに取り出して設定します(K1)。
百の位、十の位、一の位も、配列からランダムに取り出して設定します(K2、K3、K4)。
最後に、K1からK4を合成すれば、4桁の数字が完成します。
桁数を増やすのも簡単です。
5桁の数字をランダムに生成する
var arr = [ "1", "2", "3", "4", "5", "6", "7", "8", "9" ] ;
var K1 = arr[ Math.floor( Math.random() * arr.length ) ] ;
var K2 = arr[ Math.floor( Math.random() * arr.length ) ] ;
var K3 = arr[ Math.floor( Math.random() * arr.length ) ] ;
var K4 = arr[ Math.floor( Math.random() * arr.length ) ] ;
var K5 = arr[ Math.floor( Math.random() * arr.length ) ] ;
var NUM = K1+K2+K3+K4+K5;
6桁の数字をランダムに生成する
var arr = [ "1", "2", "3", "4", "5", "6", "7", "8", "9" ] ;
var K1 = arr[ Math.floor( Math.random() * arr.length ) ] ;
var K2 = arr[ Math.floor( Math.random() * arr.length ) ] ;
var K3 = arr[ Math.floor( Math.random() * arr.length ) ] ;
var K4 = arr[ Math.floor( Math.random() * arr.length ) ] ;
var K5 = arr[ Math.floor( Math.random() * arr.length ) ] ;
var K6 = arr[ Math.floor( Math.random() * arr.length ) ] ;
var NUM = K1+K2+K3+K4+K5+K6;
ところで、この方法は、一般化できます。
紹介します。
n桁の数字をランダムに生成する
上記の方法は、つぎのように、一般化可能です。
空の変数(NUM)を用意してから、ランダムに選んだ数字を、繰り返し結合させてます。
すると、変数NUMは、n桁の数字になります。
ここでは7桁の数字を生成しています(n=8とすることで、繰り返し回数は7回としています)。
nを変更すれば、100桁でも1000桁でも、ランダムな数字を生成できます。
var NUM = '';
var n = 11;
for (var i = 1; i < n; i++) {
eval("var num_" + i + "=" + " arr[ Math.floor( Math.random() * arr.length ) ]" + ";");
eval("NUM = NUM" + "+" + "num_" + i + ";");
}
以上、参考になれば幸いです。