姉妹サイトリンク

【プログラミング】どんな言語でも使える配列をランダムにソートする方法

By ぐろこーん

今回は、どんな言語でも使える、配列をランダムにソートしてくれるプログラムの仕組みについて書きました。

使い道

ブログでランダムな記事を表示させたい...。

そう思ったことはありませんか?

そんなピンポイントでなくても、配列をランダムに入れ替えたいと思ったことありませんか?

今回は、そんな人にお得な、どんな言語でも使える配列シャッフルプログラム思いついたので、を紹介したいと思います。

どんな言語でも使える配列シャッフルプログラム

どんな言語でも使えると言っても、もちろん言語によって構文は違うので、その仕組みを紹介したいと思います。

これを思いついたのが、冒頭でも書いた通り、ランダムな記事を表示させたいという希望からでした。

ですので、今回はPHPで紹介させていただきます。

用意するもの
  ・乱数を返す関数
  ・マルチソートプログラム(複数個の配列を、一つの配列のソートに沿ってソートできるプログラム)

乱数を返す関数はともかく、マルチソートプログラムはちょっときついという方は、下を参考にしてください。(バブルソート)

for (i = 0 要素数回繰り返す) {
	for (j = i + 1; 要素数回繰り返す) {
		if (配列[i] > 配列[j]) {
      //ソートされる配列
			テンプレート = 配列[i];
			配列[i] = 配列[j];
			配列[j] = テンプレート;
      
      //ソートされる配列と同じ順番に他の配列を並び替える
			テンプレート = 他の配列[i];
			他の配列[i] = 他の配列[j];
			他の配列[j] = テンプレート;
		}
	}
}

さて、次こんな感じのプログラムを関数にしたら、本題のランダムに入れ替えるプログラムに入っていきましょう。

もう分かり切っていると思いますが、今回のプログラムは、

乱数が入った同じ要素数の配列を用意し、その乱数の配列とランダムに入れ替えたい配列をマルチソートする

というものです。

まだちょっと分からないという方は、下のPHPで書いたプログラムを見てください。

PHPを知らない方でも、PHPの文法は簡単というか模範的なので、おおよそは理解できると思います。

function ArrayRandomizer($Array) {
 $new_array = $Array;
 $rmize_status = array();
 for ($i = 0; $i < count($new_array); $i++) {
   $rmize_status = array_merge($rmize_status, array(rand(0, 1000)));
 }
 array_multisort($rmize_status, $new_array);
 return $new_array;
}
PHPの関数について
array():配列を作成(今回は空の配列を作成)
count(配列):配列の要素数
array_merge(配列1, 配列2):配列1の後ろに配列2を付け足して、それ全体の配列を作成する
array_multisort(配列1, ...):マルチソートプログラム(第一引数の配列のソートに沿って他の配列をソートする)

と、こんな感じです。
今考えたら誰でも思いつきそうなプログラムですね。

以上、どんな言語でも使える使える、配列をランダムに入れ替えられるプログラムでした。

最近人気な記事


プロフィールと自己紹介とその他もろもろ

【数学】exp(x)の解析接続を、独自のやり方で直接的に理解する PART 2

ブログを改善しようと思います

【ぐろこーんの大学受験論】難問をやって感覚を麻痺させる方法の上位互換

【ぐろこーんの大学受験論】大学受験は団体戦ではなく個人戦

総括管理人のおすすめ


【数学】ラグランジュの補間を求める[長記事]

【数学】グラフの長さを求める公式を求めてみた PART 1

【数学】グラフの長さを求める公式を求めてみた PART 2

【数学】[分からない人向け]直線を表すベクトル、p = sa + tb (s + t = 1) って結局どういうイメージなのか

【数学】[分からない人向け]ベクトルの一次独立のイメージの仕方