【C言語/C++】配列をシャッフルしてランダムに入れ替える

公開日: : 最終更新日:2014/08/14 C/C++

スポンサーリンク

C言語・C++で配列をシャッフルする方法
Fisher–Yatesシャッフルアルゴルズムにより配列を並べ替えます。

int型で入れ替える

#include<stdlib.h>
void shuffle(int ary[],int size)
{
	for(int i=0;i<size;i++)
	{
		int j = rand()%size;
		int t = ary[i];
		ary[i] = ary[j];
		ary[j] = t;
	}
}

テンプレート関数にしておく場合

#include<stdlib.h>
template<class T> void shuffle(T ary[],int size)
{
	for(int i=0;i<size;i++)
	{
		int j = rand()%size;
		T t = ary[i];
		ary[i] = ary[j];
		ary[j] = t;
	}
}

シャッフル例

int main(void){
	int list[10]={0,1,2,3,4,5,6,7,8,9};
	shuffle<int>(list,10);
	for(int i=0;i<10;i++){
		printf("%d,",list[i]);
	}
}
3,7,0,1,2,9,8,6,4,5,

javascriptの場合はこちら

スポンサーリンク
  • このエントリーをはてなブックマークに追加

関連記事

WordPressサイトのSSL対応(HTTPS化)手順のまとめ【さくらサーバー】

先週頃にこのサイトをSSL対応しましたのでその流れについてまとめておき

【Google Charts】動的にグラフを更新する方法

はじめに Webサイト上でグラフを描こうと思った場合、いくつかのJa

体重変化量計算シミュレータ【ダイエット/肥満】

ツール本体 入力 カロリー入力 1日の余剰摂取/消費カロリー

おサイフケータイ対応ストレージ32GBのSIMフリースマホまとめ【2017年秋版】

はじめに SIMフリーの格安スマホのおサイフケータイ機能付きのもので

リクルート期間限定ポイントの有効な使い道

はじめに  先日クレジットカードの見直し活動の一環でポイント還元率の

初心者がお金を貯めるための節約・財テク手法まとめ【ポイント還元・投資・税金対策】

はじめに  最近なるべく節約しようと思い、お金周りに関して色々調べて

動画講座を効率的にキャプチャして復習する方法

はじめに  最近、動画媒体の講座などをたまに視聴しています。独学だと

→もっと見る

  • Author : ががんぼ
    プログラミングやWeb関係で気付いたことについてメモしていく予定。だいたいが備忘録ですが、自分でサンプルを作って動かしてみたりしています。
PAGE TOP ↑