• 締切済み

2つの組合せ

それぞれの生徒がそれぞれ好きな本を好きなだけリストしています。 生徒ID 好きな本 1    A 1    B 1    C 2    B 2    C 3    A 3    B 3    C 3    D 4    B 4    D ・・・ 私はこのクラスで本を2冊セットにして売ろうと思っています。どの2冊の組合せが一番売れるでしょうか。という問題です。実際は生徒数が1000人くらいいて、エクセルで表が作れないかと思っています。 よろしくお願いします。

みんなの回答

  • y_akkie
  • ベストアンサー率31% (53/169)
回答No.3

500種類あるそれぞれの本をB1,B2,...,B100とおきます。 また、B1,B2が好きな生徒の人数をn(B1∩B2)とあらわす事にします。 すると、n(B1∩B2),n(B1∩B3),.....,n(B499∩B500)の中から最大のものを選ぶとするばあい、#2さんがおっしゃるように500C2=12万回計算しなければなりません。プログラムを用いる場合は何とか実現できそうですが、Excelなどの手計算で行う場合はかなり膨大な作業量になる事は言うまでもありません。というよりも想像がつかないくらいの作業量です。 だが、よく考えてみると、500冊の中から好きな本を選ぶ事はないかと思います。その中で人気があるものの個数は限られる事も予想されます。 また、全通りの計算は常識的に考えた場合は、意味のない計算も多く含まれることも考えられます。例えば、n(Bi)=1明らかに個数の少ないものは、 どんな組み合わせにおいてもn(Bi∩Bj)≦1になる事は言うまでもありません。まず、適当なn(Bi∩Bj)=Mに対して、n(Bk)≦Mになるものは全て候補から除外します。それを繰り返す事で対象を絞る事ができるかもしれません。 効率良く絞込み作業を行う場合は、上位1・2の人気のある本C1,C2の選んで、n(C1∩C2)=Mとし、n(Bk)≦Mとなるものは全て選択肢から外します。 次に、絞り込みによって残ったの本のうちから、n(Ci∩Cj) > n(C1∩C2)=MになるCi,Cjを探し、n(Ci∩Cj)未満になるn(Ck)は全て選択肢から外します。(だが、n(C1∩C2)が最大の場合は言うまでもなく、見つかりません) この作業を繰り返していけば最終的には人気のある2つの本の組みあわせが見つかるのではないでしょうか。もし上手く絞りきれないのであれば、#2さんが提唱しているやり方を採用するか、そもそも最初から#2さんのやり方を採用した方が良いようにも思えます。また、#2さんの手法と対象の絞り込みを上手く繰り返していけば効率が良い事も期待されます。

Kanzaki831
質問者

お礼

ありがとうございました。 エクセルですべての可能性を網羅するのは大変だということがわかりました。参考にさせていただきます。

  • hrm_mmm
  • ベストアンサー率63% (292/459)
回答No.2

500冊中2冊の組み合わせだけでも、500*499/2 ≒12万以上なので、 全組調べるのも、結局は徒労ですし、 単純にある1冊を選択した人数上位10冊で、組み合わせて選択している人数を調べる とすれば、10*9/2=45通りなら、エクセルの数シートにおさまるかな。 作業1 クロス集計表を作る 1列目に生徒の名前(2行目から1001行目まで) 1行目に本の名前(B列から入力、しかしexcelの制限で1シート256 列までなので、2シートに分けての入力が必要ですね) 各生徒の選択した本の列のセルに1、他は未入力でok(入力作業を減らしましょう) 作業2 単純集計して上位10冊をチェック 1002行目で単純集計 B列に =SUM(B2:B1001) と入れる あとは、このセルをコピーして、1002行目の必要範囲を選択してペーストすれば、各列用の集計が出る 作業3 ある2冊をともに選んでいる人数を調べる まず対象の本の列名をとりあえず、シート1のB列とシート2のC列とします。 3枚目のシートにA列には生徒名をコピーしておき、B列2行目に =IF((Sheet1!B2=1) * (Sheet2!C2=1),1,0) この式をコピーして、同じ列の3行目から1001行目にペースト 1002行目には、作業1のSUM関数式をペースト これで、シート1のB列とシート2のC列両方を選んでいる人数が解る 隣の列に同様に、別の本を選択した場合の式を入力 この作業を45列作れば、もっとも売れそうな組がだいたい解るのでは? 最初の入力作業がすでに膨大で大変かとは思いますけど。頑張って下さい。

Kanzaki831
質問者

お礼

ありがとうございました。 アプローチとしては、候補をある程度絞りこんでから計算するのがよいということですね。助かりました。

  • sanori
  • ベストアンサー率48% (5664/11798)
回答No.1

それだけだと、条件が不足していて解けないと思います。 条件の例 ア: 各々の生徒は、2冊セットのうち、気に入った本が1冊入っていれば買う。 のか、 イ: 2冊セットの2冊とも気に入った本でなければ買わない。 のか、 それとも、 ウ: 上記2つのケースの中間なのか? (1冊しか気に入らなくても買う既定の確率を与えてやらないといけない) アであれば、あまりにも話は簡単で、 Aという本が何冊売れるか? = 表の中のAの個数 人気(表の中の個数)の1位、2位の組み合わせが最も売れる。 現実の世界は、アでもイでもなくて、ウだと思います・・・

Kanzaki831
質問者

補足

説明不足ですみません。イのケースです。実際には、本の種類も500冊くらいあります。

関連するQ&A

  • 組合せをエクセルに表にして表わしたい

    5人のA、B、C、D、Eという人がいます。 5台の1、2、3、4、5、という自転車があります。 組合せは、 5*4*3*2*1=120通になると思います。 この120通りの組合せをエクセルの表に表したいです。 どのようにすればいいでしょうか?

  • エクセルで256通りの組み合わせ

    たとえば、A,B,C,Dという箱にそれぞれ1~4の数字を入れると 1111 1112 1113 ・ ・ ・ 4444 と全部で256通りの組み合わせができると思います。 このようにいくつもの値の組み合わせをエクセルで全て作製するにはどのようにしたらよいのでしょうか。 実際には、Aに(10,20,30,40)、Bに(0.5,1.0,1.5,2.0)、Cに(500,600,700,800)、Dに(1.1,1.2,1.3,1.4)という感じの値の組み合わせを全通り作りたいです。 簡単なことかもしれませんが、あまり詳しくないので困っています。 よろしくお願いいたします。

  • 「組み合わせ」「序列」について

    同じ質問をしたのですが説明が悪かったためもう一度。 「組み合わせ」「序列」についてです。 たとえばA~E5つの要素の中で重複しない可能な限りの組み合わせの公式を知りたいのです。 たとえばそれぞれ2組づつにすると、 (1)A×B (2)A×C (3)A×D (4)A×E (5)B×C (6)B×D (7)B×E (8)C×D (9)C×E (10)D×E という組み合わせになります。 今度はこの組み合わせをワンセットにし((1)のA×B)、再び、5つの要素と組み合わせるようにもしたいのです。 (1)×A (1)×B (1)×C  ・  ・  ・ (2)×A (2)×B (2)×C  ・  ・  ・ というように。 この公式と、A+Bの組み合わせでも順序はB+Aという並べ方(順列?)もありますよね。 以上の例について、組み合わせと順列、これらの公式を教えてください。 説明文がわかりずらければ補足致します。 なお当方、数学ならずとも算数すら苦手なので、お手柔らかなご指導をお願いします。 説明文がわかりずらければ補足致します。

  • エクセルで組み合わせの集計方法

    またお世話になります。 例えば下記のようなデータがあるとします。  |B|C|D|E| ---------------------- 1|a|b|c|e| ---------------------- 2|b|c|a|e| ---------------------- 3|a|e|f|g| ---------------------- 4|b|f|e|a| ----------------------      :      : (データは下へ追加されていきます) 上記のデータを行毎に調べて、各値と最も多い組み合わせを調べるにはどうしたらよいでしょうか? 例えば「a」と最も多く組み合わせているのは、「e」となります。 あた「b」と多く組み合わせているのは、「e」となります。 このように各入力値ごとに、最も多く組み合わせているものを抽出するにはどのようにしたら良いでしょうか。 実際には文字ではなく数字を入力しています。 私が考えている方法は、すべての文字に対しての組み合わせ表を作成して、そこから最も多いそれぞれの組み合わせを求めるということですが、これではかなりの量の組み合わせデータを作成しなければならないことになります。 もっと簡単にできる方法はないかと思い、こちらに質問させて頂きました。 とても難しいような気がしますが、アドバイスをよろしく御願いします。 (エクセル98を使用しております。)

  • Excelですべての組合せ(重複組合せ)を出力するには?

    Excelですべての組合せ(重複組合せ)を出力するには? 次の条件のような場合、Excelですべての組合せ(重複組合せ)をVBAで出力するにはどうしたらいいのでしょうか? 10種類のお菓子の中から、好きなものを3個選んでセットにするとします。 同じものを複数選ぶのはありですが「菓子A、菓子B、菓子C」と「菓子B、菓子C、菓子A」は選んだ順が違うだけで同じ組合せなので、どちらか片方だけにします。 この場合、すべての組合せの数は Excelの関数で求めることができるようで COMBIN(10+3-1,3) = 220 通りあることまではわかりましたが、このすべての組合せの一覧をどのようにして出力したらいいのかがわかりません。 いろいろ検索した結果、順列という方法は見つかりましたが、重複組合せでの方法は見つけることができませんでした。 また、Accessを使っても似たようなことができるのでしょうか? 直積? できれば、3個固定ではなく5個の場合も出来るとうれしいです。 よろしくお願いします。

  • エクセル セルの組み合わせ

    エクセル表の中で目的の数値になるセルの組み合わせを探したいです A列  B列に a  210 b  80 c  403 d  196 e  221 f  307 g  325 h  233 i  237 j  307 k  487 L  267 のようにあります。 これを組み合わせて980に近い組み合わせをいくつかさがしたいのですが、 どうしたらできるでしょうか。重複はできないのです。 ソルバーで挑戦しようと思いましたが、使い方がわかりません。 だれか教えてください。おねがいします。

  • 組み合わせをすべて出力したい

    c sharp環境です。 フレームワークは.net 4.5.2になります。 組み合わせを全パターン出力したいと思ってます。 例: A B C 出力したいパターン: A B C A C B B A C B C A C A B C B A 組み合わせが3つであればいいのですが、実際には最大で6つの文字の 組み合わせ全パターンを出力する必要があります。 (文字の数は動的なので、1~6まであります) 例:A B C D E F linqなどを活用すれば簡単にできるものでしょうか? 泥臭くループを続けていく方法しか思い浮かびません。 良いやり方がありましたら、教えてください。 よろしくお願いします。

  • 組み合わせで確率のやり方がわからない

    こういう問題がありました。 A,B,C,Dの組み合わせをくじ引きで決める。 A,Bと並ぶ確率は? 答えで4人の組み合わせは、4×3×2×1=24 A,Bとなる組合わせは、3×2×1=6 6/24=1/4 なぜ4×3×2×1って計算するのですか? 小学生な問題みたいですが、しっかり勉強しなかったのでよくわかりません。 A,B,C,D A,B,D,C A,C,B,D A,C,D,B・・・ って馬鹿みたいに並べるしかやり方が思いつきません。

  • 組み合わせの問題(エクセルで組み合わせ表を作りたい)

    <問題> A、B、C、D、E、Fの6つのかごに、1~10の数字の書かれたカードを置きます。一度置いたカードは、一旦カードの束に戻し、再び10枚の中から選ぶことが出来ます。1つのかごには一枚のカードしか置けません。置いたカードは、必ず合計で10になる様に置かなければなりません。この場合、組み合わせは何通りありますか? <補足> ・Aのかごに10のカードを置いたら、すでに合計10であるので、他のかごにはカードを置かない。 ・Aのかごに9のカードを置いたら、Bのかごに1のカードを置く。 ・Aのかご5のカードを置いたら、Bのかごに5のカードを置く。 A   B   C   D   E   F  合計 10                   10 9   1                10 5   5                10 4   2  1   2   1     10 <質問> (1)何通りの組み合わせがあるか? (2)エクセルで、この例の組み合わせ表を作る場合、どうすればよいか?公式のようなものがあるのか? 大変困っております。よろしくお願いします。

  • sqlでの組み合わせ計算?

    4種の複数製品を組み合わせて金額を提示したいのですがうまくいきません 組み合わせテーブル    製品テーブル セットno 組み合わせ 種類      名前 種類 金額 1      1         a        1   a   100 2      2         a        2   b   260 2      3         c        3   c   244 3      4         a        4   d   300 3       5         b        5   a   400 3      6         b       6   b    200 3      7         b        7   b    240 4      8         a        8   a    333 4      9         b        9   c    300 4      10        b       10   a   600 これを結合させてセットnoで纏めて合計で金額をだすと種類すべての合計がでてしまいます。 全てではなく1セットごとの値段を出すようできないでしょうか? またできれば商品名の組み合わせが分かるようにしたいのですがいい案はないでしょうか? よろしくお願いします。