【プログラム】乱数の数列
<はじめに>
例えば、下記のような0~6の7個の数
[0 1 2 3 4 5 6]
を下記のようにランダムで並べることを考えたい。
[2 3 5 0 6 4 1]
本記事では、備忘録としてその方法を記載します。
Javascriptのプログラムを作成するときに纏めたもののため、本記事も基本的にJavascriptの記述で記載する。
箇条書きで書いていますが、下の方にある図をメインで見てもらったほうがよいかもです。
<乱数の数列の作成方法>
※下記0~6の7個の数を例に記載。
① 一次元の配列に、並べる前の数を入れておく。(ここでは、変数名tempとする。)
例えば、下記のような0~6の7個の数
[0 1 2 3 4 5 6]
を下記のようにランダムで並べることを考えたい。
[2 3 5 0 6 4 1]
本記事では、備忘録としてその方法を記載します。
Javascriptのプログラムを作成するときに纏めたもののため、本記事も基本的にJavascriptの記述で記載する。
箇条書きで書いていますが、下の方にある図をメインで見てもらったほうがよいかもです。
<乱数の数列の作成方法>
※下記0~6の7個の数を例に記載。
① 一次元の配列に、並べる前の数を入れておく。(ここでは、変数名tempとする。)
例.
var temp = [0, 1, 2, 3, 4, 5, 6];
var temp = [0, 1, 2, 3, 4, 5, 6];
② ランダム関数で0~6の範囲で乱数(整数値)を取得する。(ここでは、変数名randとする。)
例.
rand = Math.floor(Math.random() * 7);
※Math.random()関数は、0以上1未満の範囲から乱数を返す関数
※Math.floor()関数は、小数点以下切り捨てする関数
rand = Math.floor(Math.random() * 7);
※Math.random()関数は、0以上1未満の範囲から乱数を返す関数
※Math.floor()関数は、小数点以下切り捨てする関数
③ ②で取得した乱数を最終出力の配列に入れる。(ここでは、変数名outとする。)
例.
out[0] = rand;
out[0] = rand;
④ temp変数のrand番目に一番最後の要素を入れる。
<本作業の目的>
③で取得済みの乱数は、次から考えないようにしたい。
そのため、もともと要素数7の配列だったが、
あたかも要素数6(③で取得した乱数以外)の配列かのように扱っていくようにする。
例.
temp[rand] = temp[6];
※temp.length-1が一番最後の要素を指す
temp[rand] = temp[6];
※temp.length-1が一番最後の要素を指す
⑤ ②を範囲を一つ小さくして、②~④を要素の数だけ繰り返し実施する。
すなわち、0~5の範囲で乱数(整数値)を取得する。
例.
rand = Math.floor(Math.random() * 6);
out[1] = rand;
temp[rand] = temp[5];
rand = Math.floor(Math.random() * 5);
out[2] = rand;
temp[rand] = temp[4];
rand = Math.floor(Math.random() * 4);
out[3] = rand;
temp[rand] = temp[3];
︙
rand = Math.floor(Math.random() * 1);
out[6] = rand;
temp[rand] = temp[ ]; ←最後のステップ時は不要
rand = Math.floor(Math.random() * 6);
out[1] = rand;
temp[rand] = temp[5];
rand = Math.floor(Math.random() * 5);
out[2] = rand;
temp[rand] = temp[4];
rand = Math.floor(Math.random() * 4);
out[3] = rand;
temp[rand] = temp[3];
︙
rand = Math.floor(Math.random() * 1);
out[6] = rand;
<乱数の数列の作成方法の図>