【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の場合はこちら

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

関連記事

no image

【C++】文字列のcontainsメソッドによる比較

C++/CLIなどではStringのContainsメソッドが便利ですが、純粋なC++のstring

記事を読む

【C言語/C++】コンソールでAAアニメーション

コンソール上でAA(アスキーアート)のアニメーションをさせます。 手順としては

記事を読む

【C言語/C++】はてなの演算子の三項演算子について

C言語などのサンプルにたまに出てくるはてな(?)の演算子は 『?』と『:』の2つで1つの演算子であ

記事を読む

【C言語/C++】fgetsを使ってファイルを読み込む

fgetsで単純にファイルを読み取る C言語、C++でfgetsを使ってファイルを読み込む方法です

記事を読む

【C言語/C++】ファイルをCSV形式でfprintfを使って保存・書き込みする

数値計算などをC言語でプログラミングするとき、その演算結果をファイルとして保存する必要性がでてくるこ

記事を読む

【C言語/C++】配列のまとめ

C/C++を使っていると必ず配列を使う場面が出てくると思いますが、その配列についてまとめました。C言

記事を読む

【C言語/C++】関数ポインタと関数オブジェクトを使ってみる

関数ポインタを使う 関数ポインタはポインタの一種で文字通り関数のポインタの事で、関数を遠隔操作でき

記事を読む

OpenCVで矢印を描画する

OpenCVで矢印を描画するという関数が無いみたいだったので作りました。書いていることは参考リンク先

記事を読む

【C++】行列演算ライブラリEigen

デフォルトのCやC++には行列やベクトルなどの演算ライブラリはありません。なので行列計算などをしよう

記事を読む

【C言語/C++】余りを求める剰余演算子(%)を使う

基本的なことかもしれませんが、C言語やC++などであまりを出すには剰余演算子である『%』を使います。

記事を読む

NVIDIA DIGITSをSupervisorを使って自動起動する

はじめに 先日Ubuntu14.04にDIGITS 5をGPUなしP

【2017年度】GeForce 1080 Ti搭載BTOパソコン比較

はじめに 最近ディープラーニング用にGPUのないPCにDIGITSを

Windows用のシンプルなストップウォッチソフト紹介

Windows(10)でも使える使いやすいKAZAMITimerという

MNISTをDIGITS 5のCPUのみで試す(GPUなし)

はじめに DIGITSを使えばGUI操作で簡単にディープラーニングが

Windowsユーザが初めてMacBookを購入したときの注意点や感想

最近12インチのMacBookを購入しました。今までWindowsしか

Redmine3.2をUbuntu14.04にインストールして躓いた所についてメモ

はじめに Ubuntu14.04 ServerにRedmine3.2

UWSCを使ったソフト自動立ち上げ【SoftEther VPN Server】

やりたいこと 最近SoftEtherという筑波大学発のベンチャー企業

→もっと見る

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