数値からランダムに値を取り出す『軽い』方法
お世話になります。
かなり初歩的な質問になってしまいますが、お許し下さい。
0から19までの連続した値があるとし、そこから重複せずに
六つだけ取り出したいと思います。
やりたいことはたったこれだけなのですが、下記の条件を満たす方法で
実現したいと思っています。
1.コレクションなどの機能は使用しない
2.forやifなどといった、基本的な処理だけで実現したい
3.取得した後も、昇順に並んでいること
4.簡単なことだけに、極力コードを少なくしたい
これでできればと思うのですが、なかなか良い方法が見つかりません。
私が自分で一つ考えてみたのは、
1.値を配列aに収める
2.乱数を使って、その並び方をシャッフルする
3.六つ分の配列bを作る
4.上から六つだけ取得し、aからbにforで入れていく
5.その配列をソートする
というところまでは考えましたが、これだけのことをするのに
5ステップも費やすのがもったいなく思ってしまいます。
何より、一度シャッフルして再びソートするというのが無駄に思えてなりません。
これだけのことですが、もっと簡素に効率よく行える方法はありますでしょうか。
よろしくお願いします。
転記(2016/4/13)
# 私(argus)の回答に対するコメントになっていますが、内容的に質問欄の方が良いかと思い転記します
不甲斐ない質問で、皆様に不快な思いをさせてしまい、申し訳ありません。 言語は今のところ、C# を使用して書いていますが、この C# は仮の土台で、 将来的には別の言語、Java、もしくは php に移植するつもりでいます。そういうこともあり、言語を絞らないで基本文系だけでというのもあり、またコレクションなどのクラスは重くなるため、少ないコードで実現できるなら、基本のアルゴリズムだけで済ませたかったというのも理由です。よって、Java にしろ php にしろ、コレクション系のものは使用できますが、『このクラスを使えば良い』というのではなく、アルゴリズム的に解決できる簡素な方法を模索しています。…さすがに、『20 の数字はどこからきたのか』というのには、返答のしようがありませんが。