• ベストアンサー

配列の要素

#include <iostream> using namespace std; int main() { int n[10] ={1,2,3,4,5,6,7,8,9,10}; int i; for(i = 0; i < 10; i++){ cout << "a[" << i << "] = " << n[i] << endl; } return 0; } ここまでは完成することはできたのですが この要素の並びをシャッフルしてランダムな順に並び変える方法がわかりません。

質問者が選んだベストアンサー

  • ベストアンサー
  • pick52
  • ベストアンサー率35% (166/466)
回答No.2

まあ、確かにそれだけ書くのは不親切だとは思いますが、 せっかくヒントを書いてくれているんですからそれくらいは 自分で調べた方がいいと思うんですけど。 なんのためのネットなんだか分からないですよ。 質問してから回答がくるまでを待つより自分で調べた方が早いことも 結構多いです。 また、自分で調べることでより身につきやすくなります。

参考URL:
http://search.goo.ne.jp/web.jsp?status=select&from=goo_oshiete&PT=goo_oshiete&nsMT=&MT=std%3A%3Arandom_shuffle%28%29&c=0
mutekisama
質問者

お礼

わかりました。 ありがとうございます。

その他の回答 (2)

回答No.3

C++じゃなくてCだとこんな感じ? #include <stdio.h> #include <stdlib.h> #include <time.h> /* a[0]~a[n-1]をシャッフル */ void shuffle(int a[], int n) {  int k, tmp;  srand((unsigned int)time(NULL)); /* 乱数の種 */  while (n>1) {   k=(rand() / ((double)RAND_MAX+1.0f))*n; /* 0~n-1の乱数を求める */   n--; /* 配列の最後を指す */   tmp=a[n]; a[n]=a[k]; a[k]=tmp; /* 配列の最後と乱数番目を入れ替える */  } } int main() {  int n[10] ={1,2,3,4,5,6,7,8,9,10};  int i;  for (i=0; i<10; i++) printf("%d ",n[i]); printf("\n");  shuffle(n,10);  for (i=0; i<10; i++) printf("%d ",n[i]); printf("\n");  return 0; }

  • koko_u_
  • ベストアンサー率18% (459/2509)
回答No.1

std::random_shuffle()

mutekisama
質問者

補足

どこにいれてどのようにするか詳しくお願いします。

関連するQ&A