• ベストアンサー

配列をランダムに並び替えてもとに戻したい

ko_kintaの回答

  • ko_kinta
  • ベストアンサー率39% (43/109)
回答No.6

Cで配列を並び替えるのはあまり効率が良くないと思いますが。 「ある処理」を行うランダムな順番を別の配列に取得して、その順番に沿って「ある配列」を処理するのではいけませんか。 hoge[n];  /* ある配列 */ order[n];  /* 処理順 */ /* order[n]に0~(n-1)のランダムな一意の数値を格納 */ ... for(i = 0; i < n; i++) {   ある処理(hoge[order[i]]); } これなら配列を並び替えずにランダムな処理が行えます。

関連するQ&A

  • 配列を使わずに、変数名を動的にループで回したい

    配列を使わずに、変数名を動的にループで回したい 大学の課題をやっている途中に思ったことなのですが……。 プログラム中に同じ型の変数p1,p2,p3があり、それぞれの変数にループで同じ処理を施したいと思っています。 しかし、「p(i)」や「("p" + i)」などと、変数どうしを別のものとして認識させようとしても、コンパイラから警告が出て上手くいきません。 配列を使えば、このような処理が出来ることはわかるのですが、使う変数名を指定されてしまっているために、今回は配列を使えません。 出来るか出来ないか、出来る場合は方法を知りたいです。 後、今回はC言語のプログラムで利用出来るかが自分にとっての問題なのですが、C言語以外のこのプログラミング言語なら出来る、とかの情報もこの機会に知りたいです。 お答え出来る範囲でいいので、もしよければ回答お願いします。

  • 整列してる配列をランダムに並び替える

    タイトルのままで 1~Xまで並んでいる配列を、順番をめちゃくちゃにする場合、どのようなアルゴリズムをしようしているのでしょうか? 一応言語の縛りは無しという事で、分かりやすいアルゴリズムがあったらお願いします。

  • 二次配列のqsortですが

    Cの初心者ですがよろしくおねがいします。 二次配列をqsortでソートしたいのですがまだソートする前の順番も記憶したいのですがどうすればいいのでしょうか 分かる方にはぜひ教えていただきたいのです! 例えばcount[j][i]をqsortでソートし、昇順で並べ変えた後のiの元の順番に対して今の順番も記憶する場合でお願いします.

  • C言語 ポインタと配列

    C言語で配列をあつかう場合、ポインタをつかうか、配列の添え字を使って処理するか迷うのですが、どちらが良いのでしょうか? 処理速度ではどちらが上でしょうか?

  • 配列について

    C言語には2次配列までしかないようなのですが3次配列のようなものはできないのでしょうか?

  • プログラミング言語 rubyを用いて、

    プログラミング言語 rubyを用いて、 画像処理プログラミングを書こうとしていますが、以下の点が分かりません。 1・メモリの動的確保はどうするの?(C言語でいうmalloc) 2・ファイルから配列に展開するにはどうしたらいいの? 以上が分かればわかるきがするのですが・・ 当方 C言語での画像処理プログラミングはそれなりに経験があるのですが rubyで実現できるのかわからなくて・・

    • ベストアンサー
    • Ruby
  • 全配列に0を入力

    c言語で配列を宣言した後に、ループを使わずに 配列全体に0を入力したいのですが、そのような方法はありますか。 あれば、どのようにすればよいか教えてください。お願いします。

  • c言語の配列操作

    c言語で、hairetu[8][8]があったとして、その中でいくつかの中に1が入っていて、そのほかは0が入っているとします。 0 1 2 3 4 5 6 7 0|1 0 0 0 1 1 1 0 1|1 0 0 0 0 0 0 1 2|0 1 1 0 1 0 1 1 3|・・・・・・・・・・・・ 4|・・・・・・・・・・・・ 5| 6|・・・・・・・・・・・・ 7|0 1 1 0 0 0 0 1 という具合です。 そのとき、ランダムで1を1箇所しかない状態にしたいのですが、 自分が考えた方法だと無駄が多いので、もっとスマートな方法はないかと思い質問させてもらいました。基本的な質問なのですがよろしくお願いします。 以下自分が考えた方法 [64][2]の配列を作成し、上記の[8][8]の配列をfor文で解析し、1が入ってるところの番号を配列[64][2]に格納する。 乱数を使い、ひとつだけ選択する。

  • 配列&ランダム?

    PHP初心者です。 試行錯誤してるのですが、一向に進みません…。 上手く説明できるか分からないのですが… まず5種類の選択史(プルダウン)があります(恋愛、仕事、友達…etc) 恋愛を選択するとします。 すると10個の選択史があります。(ラジオボタンでも普通のリンクでもどちらでも構わない) 「(1)浮気された…(例)」を選ぶとします。 次に質問事項が表示されます。 この回答は「YESorNO」で選ぶようにしたいです。 そしてどちらかを選ぶと、2番目の質問事項が表示されます。 これも同様に「YESorNO」です。 そしてどちらかを選ぶと結果が表示されるのですが、結果表示はランダムにしたいのです。 ランダム内容は5つ程ありますので、その5つをランダムに表示させます。 こんな感じのページを作りたいと思っています。 ソースや参考になるサイトありましたら、教えてください(;o;) 説明下手なので、分かりづらいかとは思うのですが、質問ありましたら出来る限りお答えしますので、分かる方教えて下さい!! 本当に困っています。 宜しくお願いします(>o<)

    • 締切済み
    • PHP
  • 配列や連想配列について

    言語一般の配列や連想配列について 最近どういう解釈をしていいのか わからなくなってしまいました。 仮にPerlで話をさせてもらいますと、 連想配列%FORMがあるとき、 個々の要素にアクセスする場合 例えば$FORM{'name'}などと記述しますが、 この$FORM{'name'}を みなさんはどのように解釈しているでしょうか? $FORM{' '}にキー nameを 代入しているようなイメージで、 「連想配列%FORMからキー'name'の値を取得する」 という考え方でしょうか? わたしは最近、 $FORM{'name'}はそれ自体が一つの変数という 考え方が出来るのではないかという気がしているのですが、 連想配列の実装から考えると この考え方は正しいのでしょうか? 以前、配列について同様の質問を したことがあります。 例えばC言語でint a[100]と宣言した場合は、 連続的なアドレスに確保されるため、 a[2]はaという名前のアドレスから a + 2 番目の場所という意味になるが、 言語によっては不連続なアドレスに 確保されるため、a[2]は一つの変数名として 考える必要がある・・ との回答でした。 ならば連想配列の場合も もし不連続なアドレスに確保されるならば、 $FORM{'name'} は一つの変数名と 考えたほうが正しいのではないかと 思ったからです。 連想配列の内部的な処理がどうなっているのか 教えて頂きたいです。 よろしくお願いします。

    • ベストアンサー
    • Perl