- ベストアンサー
重複しない乱数の生成
他の質問での回答に対してもう少し具体的に知りたいと思って投稿しました。 自分はいわゆる日曜プログラマです。 勉強のつもりでOKWebのコンピュータ関連でいろいろ回答してます。 (未熟者なのでとんちんかんなのが多いですが) で次の質問に回答しました。内容は「重複しない乱数を発生させる方法」です。 http://okweb.jp/kotaeru.php3?q=1239644 私が回答したのは#10です。私の考えは 1. 最初に配列に重複しない値を入れ(1から100を順番に) 2. 2要素の値を入れ換える 3. 2を任意の回数繰り返す 4. 配列の先頭から値を取り出す という考えです。 が、そのあと#12の回答があり、それを読むと私の方法ではマズイようです。 「どうしてマズイのか」ということはなんとなくわかった(ような)気がするんですが、 では「具体的にどうすべきなのか」が知りたいです。 違う方法として自分ではこう考えました。 上記1の配列(これを配列Aとする)と同じ要素数(ここでは100個)の配列Bを作って 1. 0~(配列Aの要素数 - 1)の範囲で乱数を発生させる -> 得られた数値をnとする 2. 配列A[n]の値を配列Bに入れる -> 最初は配列B[0]に入れる 3. 配列A[n]を削除 -> 要素数が1個減る 以下これを繰り返し、配列B[99]まで入れて終了。 過去の質問を覗いてみましたが、いろいろな方法があってどれがいいのか迷ってきま した。どちらかというと具体的なソースではなく考え方を教えてください。 よろしくお願いします。
- みんなの回答 (11)
- 専門家の回答
質問者が選んだベストアンサー
その他の回答 (10)
- bender
- ベストアンサー率45% (108/236)
回答No.11
- shkwta
- ベストアンサー率52% (966/1825)
回答No.10
- UKY
- ベストアンサー率50% (604/1207)
回答No.9
- shkwta
- ベストアンサー率52% (966/1825)
回答No.7
- UKY
- ベストアンサー率50% (604/1207)
回答No.6
- ymmasayan
- ベストアンサー率30% (2593/8599)
回答No.5
- hide9048
- ベストアンサー率42% (6/14)
回答No.4
- bender
- ベストアンサー率45% (108/236)
回答No.3
- cyoki_par
- ベストアンサー率28% (9/32)
回答No.2
- cyoki_par
- ベストアンサー率28% (9/32)
回答No.1
お礼
お礼が遅くなってすみません。 BLUEPIXYさんはこの質問のきっかけになった方なので、御本人から回答いた だけてたいへん嬉しいです。ありがとうございました。 おかげで疑問がとけました。
補足
PLUEPIXYさんの回答はいつも「的確だなー。すごいなー」と思って読ませて いただいてます。今回は私の誤りに気づかせていただいてたいへん感謝して おります。 実は向こうの質問でお聞きしようとも思ったのですが、質問者ではないのに あまりかき回すのはよくないかなと思い、質問を立ち上げた次第です。 もし、BLUEPIXYさんに余計なお手間を取らせたとしたら申し訳ございません。 ひとえに私の理解力のなさが原因です。お許しください。