任意の桁数の数字の文字列をランダムに生成するJavaScriptプログラム

任意の桁数の数字の文字列をランダムに作成したい場合の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 + ";");
}

以上、参考になれば幸いです。