- ベストアンサー
配列の要素
#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; } ここまでは完成することはできたのですが この要素の並びをシャッフルしてランダムな順に並び変える方法がわかりません。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
まあ、確かにそれだけ書くのは不親切だとは思いますが、 せっかくヒントを書いてくれているんですからそれくらいは 自分で調べた方がいいと思うんですけど。 なんのためのネットなんだか分からないですよ。 質問してから回答がくるまでを待つより自分で調べた方が早いことも 結構多いです。 また、自分で調べることでより身につきやすくなります。
その他の回答 (2)
- JaritenCat
- ベストアンサー率37% (122/322)
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)
std::random_shuffle()
補足
どこにいれてどのようにするか詳しくお願いします。
お礼
わかりました。 ありがとうございます。