• ベストアンサー

パターン数及びパターンを求めるには・・・

はじめまして、こんにちは。 エクセルというか、数学的な質問になるかもしれませんが、困っておりまして お知恵をお借りできればと思い質問させていただきました。 問題が 【A】【B】【C】【D】【E】とあり、 それぞれの項目には0~12の数字が入ります。 A+B+C=12 かつ、A+D+E=12 になる条件の時、 そのパターン数、及びそのパターンを表示(一覧として出したい)するには どうしたらいいでしょうか・・・。 (A~Eにはもちろん同じ数字も入ります。) エクセルで挑戦しましたが、行き詰まってしまいました。 数学的な問題かもしれませんが、何かいい方法があれば・・・。 申し訳ありませんが、どうぞよろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
noname#52504
noname#52504
回答No.3

ん~、一般的な解法(?)を考え始めると確かにやっかいなのですが、 ご質問のケースに限って考えるならば、 非常に強い制約がついているので比較的簡単に求まります。 ・Aは0~12まで自由にとれる ・A=NのときB,Dは0~12-Nの範囲で自由にとれる ・B,Dは互いに干渉しない ・B,Dが定まれば、自動的にC,Eも定まる つまり、 A=0のとき、B:13通り × D:13通り A=1のとき、B:12通り × D:12通り 以下同様 というわけで、 総数=13^2+12^2+…+1^2=SUMPRODUCT(ROW(1:13)^2)=819通り パターンを書き出すには、 1行目を、  A1:0  B1:0  C1:12  D1:0  E1:12 2行目を、  A2:=IF(COUNTIF($A$1:A1,A1)=(13-A1)^2,A1+1,A1)  B2:=IF(A2<>A1,0,IF(D2=0,B1+1,B1))  C2:=12-B2-A2  D2:=IF(A1<>A2,0,IF(D1=12-A1,0,D1+1))  E2:=12-D2-A2 として、2行目を{12,0,0,0,0}が返るまで下方にフィル。 もっとも、↑は、「組み合わせを求めている」というよりも、 あらかじめ判っている「組み合わせを書き出している」だけですが…。 VBAでやるならこんな感じでしょうか。 ----------------------------------------------------- Sub Sample()  i = 0  For a = 0 To 12   For b = 0 To 12 - a    For d = 0 To 12 - a     i = i + 1     Cells(i, 1) = a     Cells(i, 2) = b     Cells(i, 3) = 12 - (a + b)     Cells(i, 4) = d     Cells(i, 5) = 12 - (a + d)    Next d   Next b  Next a   MsgBox i & "通り" End Sub ----------------------------------------------------- いずれもExcel2003で動作確認済。 以上ご参考まで。

twinktwink
質問者

お礼

ありがとうございます!! 条件定義がよくわからず、数式が組めずにおりました。 全パターンを出したいわけではなかったので、 引き算でできるかな?と思っていたのですが、そう甘くなかったことを 今回痛感しました^^;;;; ばっちりでした。本当に助かりました! ありがとうございます!!

その他の回答 (2)

  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.2

ナップザック問題は難しいですよ。今回はエクセルを使用して力ずくで回答を求める方法を説明します。ただしExcel2007が必要です。 今回の質問の場合各セルの取りうる値は0~12の13種類あります。 A~Eの5つがありますからすべての組み合わせは13^5=371293通りです。(「^」はべき乗) Excel2003までは最大行数は65536行ですから全ての組み合わせをシート上に作成できません。これが2007が必要な理由です。 新規シートのA1セルに以下の式を入れて、右方向にE列までと、下方向に371293行目までコピーします  =MOD(INT((ROW()-1)/13^(5-COLUMN())),13) これで全ての組み合わせが表示できました。 この中で「A+B+C=12 かつ、A+D+E=12」のパターン数は  =SUMPRODUCT((A1:A371293+B1:B371293+C1:C371293=12)*(A1:A371293+D1:D371293+D1:D371293=12)*1) で求まります。ただし処理時間はとんでもなくかかるかもしれません また全ての組み合わせを表示したかったらF1セルに  =IF(AND(A1+B1+C1=12,A1+D1+E1=12),"○","") を入力して最終行までコピーすれば、条件に合致するセルは「○」が表示されますから、フィルタでその行だけを表示させればよいでしょう。 今手元にあるExcelは2003なので0~8までの数字でしかテストできませんが(9^5=59049<65536行)、「A+B+C=12 かつ、A+D+E=12」は429パターンありました。

twinktwink
質問者

お礼

社内に1台しか2007が入っているPCが無いのですが、 何とか使わせてもらって確認してみたいと思います! ありがとうございます。 こんなにパターンがあったんですね・・・。 ある程度条件がたくさんあるので、1000も無いと思ってました・・・。 とっても勉強になりました。 ありがとうございます!

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.1
twinktwink
質問者

お礼

参考URLをありがとうございます。 そんなに複雑な問題だったんですね^^;;; 数学的な知識は皆無のため、勉強しないといけないと 思いました・・・。 ありがとうございます。

関連するQ&A

  • 組み合わせパターンについて

    質問です! ExcelのA1からG1のセルに、1から7の数字が入力されています。 A1が1、B1が2・・・G1が7 そこから異なった5つを選びセットを作りたいです。 21通りあることが分かるのですが、全てのパターンをExcelで抽出したいです。 よろしくお願いします。

  • EXCEL 2枚のシートの比較・抽出(別パターン)

    iwao32と申します。 EXCELについてお教え下さい。ど素人なので、なるべく詳しくお教えいただけると幸いです。 先日同じような質問をさせていただいたのですが、別パターンの質問です。 以下の例で示します。 Sheet1                        Sheet2 A列    B列    C列              A列 3      30     c               2 5      50     e               4 1      10     a               5 4      40     d  2      20     b という2枚のSheetがあるとき、Sheet1のA列とSheet2のA列を比較して、Sheet1の中で、Sheet2のA列にあるものだけ、Sheet3に、 Sheet3 A列    B列     C列 2      20      b 4      40      d 5      50      e というものを作りたいのですが、やり方をお教え下さい。 よろしくお願いいたします。

  • グループ分けのパターン

    A、B、C、D、E、F、の6人がいます。 これを3:3のグループに分けたいのですが、 各人がお互い全く違った組み合わせになる2つのパターン はできますか?

  • エクセル データの抽出。延べ数を構成する個の数を求める。

    エクセル初心者です。 エクセルでに下のように500人ほど人名(a b c d e f・・・)が無作為乱雑に列挙されています。 c d d c c b b a a d d d a a b b c c a a b b c c c c c c a c c c d e e e d d e e e・・・500人分 のべ500人のうち、一度でも出現していた人名を上手く抽出できますでしょうか? 最終的に求めているのは、一度でも出現していた人名の「数」ではなく、「一度でも出現していた人名それ自体」を新しいシートなりで利用したいのです。 ご教示願います。

  • 正の数、負の数

     夏休みの宿題で、次の文章題がでました。答え(説明省略)は、一応、下のように出ました。  A,B,C,D,Eの5人が数学のテストを受けて、結果が返ってきた。A君はD君より8点低かった。BさんはD君より2点低かった。CさんはD君より3点高かった。CさんはA君より12点高かった。EさんはA君とCさんの平均と同じで70点でした。5人の得点を説明を加えて求めなさい。説明がないと正解にならない。  A 君: 64点  Bさん: 71点  Cさん: 76点  D 君: 73点  Eさん: 70点  しかし、問題を読みながら得点の高低を図に描きながら考えていくと、3行目の「CさんはA君より12点高かった。」の箇所で、それまでの説明と矛盾するところが出てくるような気がします。具体的には、CさんとD君の得点差です。どなたか、この点について教えて下さい。  「CさんはD君より3点高かった。」が間違いで、  「CさんはD君より4点高かった。」とすべきなの でしょうか。 以上、よろしくお願いします。

  • VBA マトリクス 全パターン

    VBAで以下のことを実現したいです。 以下のエクセルがあります。   A B C 1 a b c 2 d e f 3 g h i このマトリクスの全パターンを別のシートに表示したいです。 表示結果 abc abf abi aec aef aei ・  ・  ・ ghi VBAで以上のことを実現したいですが、ご教授お願いいたします。

  • 場合の数の問題

    数学の問題集を解いているのですが、分からない問題があります。 場合の数はかなり苦手なので簡潔な解説を宜しくお願い致します! a,b,c,d,eの5文字を一列に並べたとき、a,bが隣り合う場合は何通りあるか。答えは48通りです。 初歩的な質問で恥ずかしいですが、お分かりの方、教えて下さい。

  • エクセル2007使用です。条件書式を使用して、あるセルの数が一定量を越えたら、指定するセルの数字を表示する

    エクセル2007を使用しています。 A1に100 B1に200 と入力しておいて、C1からC30の合計数字をD1に表示するようにします。 このD1の数字が20を 越えなければ、E1にA1の入力値を表示して、 越えたら、E1にB1の入力値を表示させたいのですが、 マクロを使用せずにやるにはどうすればよいのでしょうか? 集計表を作っているのですが、うまくいかず悩んでおります。

  • 4×4数独の最少置数

    先日数学セミナーの問題で、4×4の数独には最低でも4つの数字が分かってないとだめ、ということを証明する問題が出ていました。 複雑で証明が理解できなかったのですが、      a(11)a(12) b(11)b(12)      a(21)a(22) b(21)b(22)      c(11)c(12) d(11)d(12)      c(21)c(22) d(21)d(22) と、各マスに未知数を振って、(各マスは1,2,3,4のみ) として、     a(11)+a(12)+a(21)+a(22)=1+2+3+4=10     b(11)+b(12)+b(21)+b(22)=10     c(11)+c(12)+c(21)+c(22)=10     d(11)+d(12)+d(21)+d(22)=10     a(11)+a(12)+b(11)+b(12)=10     a(21)a+(22)+b(21)+b(22)=10 c(11)+c(12)+d(11)+d(12)=10     c(21)+c(22)+d(21)+d(22)=10 a(11)+a(21)+c(11)+c(21)=10 a(12)+a(22)+c(12)+c(22)=10 b(11)+b(21)+d(11)+d(21)=10 b(12)+b(22)+d(12)+d(22)=10 「求める未知数が16個にたいして12個しか式がないから、少なくとも4個既知でなければならない」 は解答になっていないででょうか。

  • [Excel]複数の要素が合致するレコード数をカウントする

    Excelにおいて 1,A,B,C,D,E,F, 2,A,C, 3,E,D,C,A, 4,B,E,F,A, 5,D,A,F,C,B, のようなデータがあったとして(数字はレコード番号で、コンマはエクセルのセル区切りだと思ってください。) このデータから「"A"と"C"が両方含まれるレコードの数」 (この場合は4件)を抽出するには、どのように関数を組み合わせればよいでしょうか? ちなみに要素A~Fはソートされておりません。 COUNTIF,VLOOKUPやMATCH関数を使いそうなことはなんとなくわかるのですが、詳しい方よろしくご教示ください。

専門家に質問してみよう