- ベストアンサー
1-10をランダムに並べる
例えば、 1-10を 3 6 7 5 1 8 2 4 9 10 というように並べることは、できますでしょうか? Rand関数を使えばできますか? よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
でけます。 最初、10個のうちから1つ選ぶ。 次は、9個のうちから1つ選ぶ。(すでに選んだ数はパスすればよい) 次は、8個のうちから… と繰り返していきます。 1~10、もしくは1~9の乱数を作り出すには、 rand()を使います。
その他の回答 (2)
シャッフルするのが簡単。 配列に1から10まで並べる。 1番目の配列の中身を、1から10番目のうちランダムに選んだものと入れ替える。 2番目の配列の中身を~と10回入れ替えておしまい。
お礼
ありがとうございました。 srand(now);で、3分かかりましたので、 おかしいなぁと思いましたが、 修正できました。 ありがとうございます。
- neKo_deux
- ベストアンサー率44% (5541/12319)
1 0.23 2 0.75 3 0.11 9 0.72 10 0.69 と並べ替えたい数と乱数をセットにして、乱数の方をキーにソートとか。 ソートのアルゴリズムが利用できるのなら楽かも。
お礼
ありがとうございました。 srand(now);で、3分かかりましたので、 おかしいなぁと思いましたが、 修正できました。 ありがとうございます。 for(int a=0,int x=0;a<104;a++,x++) { time(&now); srand(now+a+x); ran[a]=1+rand()%104; for(int b=0;b<a;b++) { if(ran[a]==ran[b]) { a--; } } }
お礼
ありがとうございます。 ひと手間かかりますか。 その方針でやってみようと思います。