• 締切済み

VBAを使って全おもりの重さの期待値を出したい。

ここに1g、2g、3g、・・・、16gの16個のおもりがあります。重さは見た目では判断出来ないと考えて下さい。おもりの軽い方を判別出来る天秤が8つあります。全天秤に皿が2つずつあり、全皿おもりを1個ずつのせられるものとします。8つの天秤を1度同時に使う作業を1作業とします。特に重さがわかっていない2個のおもりの軽い方の重さの期待値は5.67g。期待値5.67gどうしで軽い方の重さの期待値は3.4g。期待値3.4gどうしで軽い方の重さの期待値は1.89g。期待値1.89gどうしで軽い方の重さの期待値は1gです。ここまでで4作業必要でした。僕がやりたい事はこの4作業で全おもりの重さの期待値を出す事です。全おもりにA1からP1まで名前を付け、エクセルのA1からP1にそれぞれの重さの期待値を出したいのです。8天秤左から右に並べ両皿とも見えるものとし重さの期待値が小さいおもりほど左の天秤にのせて軽さくらべをします。そして期待値を出し、また期待値が小さいおもりほど左の天秤にのせてを4作業行うと考えて下さい。VBAを使ってA1<B1などの条件を付け加えていくだけで全おもりの重さの期待値を出す事は出来るでしょうか?

みんなの回答

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.6

カルタのルールはよくわかりませんが、 最初の4試合の勝率だけでは実力の差は 判定が難しいだろうと思います。 そこで、4試合の中身がわかれば多少なりとも シュミレーションの手助けなるのではと思います。 たとえば、囲碁では半目勝ち、あるいは中押し勝ち というものがあります。もちろん試合時間もあるかも しれません。 もし、カルタ勝敗の中に獲得枚数というものが記録 されていれば、それは期待値に大きく影響するはずです。 また、囲碁のような中押し勝ちのような試合が最後の 一枚の取り合いにならないうちに終わるようなことならば、 中押し勝ちのポイントと残りの枚数の獲得分配を その試合が終わった時点での獲得枚数に比例させて 分配し、ポイントを増やす、あるいは残りは総取り というようなものを試合結果に入れていけば期待値 は大きく変わってきます。 実力が拮抗した者同士では獲得枚数の差はないかもしれないし、 あるいはその時の状況によって拮抗していても実力の下位の 者が中押し勝ちをするかもしれません。当然ながらはるか下位 のものが実力者に中押し勝ちをするかもしれません。しかし、 試合ですから、その日、その時の状況に左右されるのは当然でそれも 実力とすれば、このようなことをシュミレーションに 入れていけばかなりいい線のものができるのでは、と思います。 以上は、返事をいただいた時点で作成しました。その後、 正月のお神酒の残り香を減少させつつ以上の点を考慮して 相関係数を持ち出していろいろシュミレーションして みました。 また、試合形式がシュミレーションに影響するかという ことも考えようとしましたがこれは少し時間が無さ過ぎるので 課題としました。つまり、たとえば、16人を4つのグループに 分けて各自3試合行い、グループ内総当りをし、その勝敗によって 次の対戦相手を選定する、あるいはノックダウンで対戦相手を 選定するなどいろいろです。 何はともあれ、恣意的な判断がなるべく入らないように 試合毎に出てくるデータを分析して4試合終了時で 実力に応じた対戦相手の選定はかなり現実に 近くなるのでは、と思います。 実は、これはトランプの話のときに思いついていたので すが、計算上の期待値ではなく、トランプの相対的な 数値の差と勝敗を加味すれば次の試合の組み合わせには 影響する、しかし1試合ではなく、4試合後ならばデータと しては歩留まりのいいデータになる、なおかつ1試合 終了するごとにシュミレーションの結果との相関を プロットし、相関曲線(あるいは直線)に近くなるか 判定できるのではと思います。相関ではなく他の方法でも かまいません。 やはり、期待値は無から有ではなく、現実の結果の 積み重ねの延長上に可能性として設定しないと 何よりも試合をつつがなく進行しようとして おられるgashigeruさんが一番徒労をかみしめる ことになります。 たまたま、Excelで計算をということでこのカテに 投稿されたのだろうと思います。私もこういった 議論は大好きなのですが、如何せんお神酒の影響が まだ残っているので話が支離滅裂になる前に 一旦終わります。

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.5

4試合というのは会場全体で4試合なのですか。 あるいは一人が4試合ということですか。 文脈からすると一人4試合のような感じですが。 会場全体で4試合ならば手も足も出ませんが。

gashigeru
質問者

お礼

一人4試合です。4試合分しか時間がありません。

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.4

おおざっぱにですが。 質問のような方法で期待値を出すのは無理です。期待値は 本来、事象x確立の集合を足して出します。 たとえば、16人の勝つ確率が、 (A) 0.3 0.301 0.302 0.303・・・・0.315 である場合と、 (B) 0 1/15 2/15・・・・・・14/15 15/15 のような場合、(A)の場合は最強の人間が4試合戦って 全て負ける確率は0ではない。反対に一番弱い人間が すべて勝つ確率は0ではない。 ところが、(B)の場合は、最強の人間はかならず 全ての試合に勝つ。一番弱い人間は必ず負ける。 ところが、4/15以上の勝つ確率を持つ人間は4試合 やってすべて勝つ確率は0ではないから、順序は つけられない、すなわち強さの期待値ははじきだせない。 つまり、2番目の場合のみ総当りして期待値と強さの 順序が確定できるということになります。

gashigeru
質問者

お礼

指摘ありがとうございます。現実はそうなんですよ。でも1位とか2位とか16位まで出したいわけなんですね。そのための方法として1位から16位までを上下が成り立つように当てはめた全パターンの平均を使おうと考えたのです。もちろん自力で出すのは無理です。結果VBAを使う事を勧められました。果たしてVBAで可能なのかは僕にはわかりません。指摘ありがとうございます。納得のいく順位決めをして評価を得たいと思っているところです。

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.3

この質問は質問の仕方が良くなくてわかりにくいと思う。 (1)期待値と言う統計確率の用語の使い方がただしくない。 数学的な意味を外れて、我流の意味で使ってませんか? (2)VBAの問題ではない。VBAの熟練者でも解けない人はいるでしょう。 アルゴリズム(手順)がわかって、その後にそれに沿ってVBAなりでプログラムを使うことはありえるが 難しいのは、メインは、はかりをどのように使うかという、アルゴリズムでしょう。 パズルにあるような問題だとおもう。あるアイデアが必要な問題でしょう。 数学のカテに質問すべきと思う。 似ているかどうか判ってないが http://web2.incl.ne.jp/yaoki/ansnise3.htm のようなタイプの問題でしょうか。 ーーー >1g、2g、3g、・・・、16gの16個のおもりがあります これは標準分銅 http://www.murakami-koki.co.jp/weights.html 参照 のような、きっちりした重さの分銅のようなものですか。 直ぐ次の文章に>重さは見た目では判断出来ないと考えて下さい、とあるのが紛らわしいのでは? ーーー 以上考慮して質問を書き直してもらわないと、読者に質問の意味が伝わらないのでは? ーー もし質問者が、そうは思わないならこの補足要求は無視してください。

gashigeru
質問者

お礼

なるほど。僕は5つ同じ様な質問をしていますがわかりにくいという答えがよく来ます。多分僕の説明が上手くないのだと思います。該当するおもりの重さとそれである確率の合計なので期待値と呼ぶのかと思っていましたがそうではないのかもしれませんね。このような結果になるというおもりの全パターンの平均が期待値になると考えていますが使い方がおかしいのかもしれません。おもりを効率良く順番通りに近付ける方法を探しています。おもりの判別問題とはちょっと違います。おもりですが0gの箱の中におもりが入っていて中が見えないとでも考えてくれればいいと思います。どの箱にどれが入っているかを8つの天秤を4回使って出来るだけ効率良く見つけ出そうというわけです。もちろん4作業だけでは1gと16gぐらいしか見つからないと思います。4作業しか行なえないのであとは期待値を当てます。何のためかと言うとカルタ大会で順位を出来るだけ正確なのを出したいからです。おもりはわかりやすくするための例として出しています。でも指摘ありがとうございます。いい質問方法に変えたつもりなのですが質問も難しいですね。

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.2

#1です。計算はすべての重りの期待値が決定 されるまで、トランプでいえばすべて赤に 変更されるまで。以上です。

gashigeru
質問者

お礼

ありがとうございます。全おもりの判別をするのにはいい方法だと思いました。でも都合により4作業しか行えません。というのは実はおもりは説明のためであり使う目的はカルタ大会の順位決めです。時間の都合で4試合しか行えません。その4試合だけでいかに参加チーム16チームを出来るだけ正確な強さに並べかえるかが僕の課題です。そのために僕は期待値を使おうと思い、質問しました。期待値を出すって難しいですよね。

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.1

文脈からすると期待値とは関係なく最小の重さの 重りを選択していけばいいだけなのでは? 8つの天秤を1度同時に使う作業を1作業とします。特に重さが わかっていない2個のおもりの軽い方の重さの期待値は5.67g。 期待値5.67gどうしで軽い方の重さの期待値は3.4g。期待値 3.4gどうしで軽い方の重さの期待値は1.89g。期待値1.89g どうしで軽い方の重さの期待値は1gです 上記の命題は以下。 (1) >8つの天秤を1度同時に使う作業を1作業とします。 軽いほうの8個を取り出す。 (2) >特に重さがわかっていない2個のおもりの軽い方の重さの期待値は5.67g。 >期待値5.67gどうしで軽い方の重さの期待値は3.4g 軽いほうの4個を取り出す。 (3) >期待値3.4gどうしで軽い方の重さの期待値は1.89g。 軽いほうの2個を取り出す。 (4) >期待値1.89g どうしで軽い方の重さの期待値は1gです 軽いほうの1個を取り出す。 方法 (A) 最初に上記の(1)から(4)までを実行します。その結果 一番小さい重りのものが選択されます。その重りに 1gの期待値を設定します。 プログラム上はデータはランダムに並んでいるので (A1,B1)、(C1,D1)の組み合わせで取り出していくものと します。もちろんどのようにランダムに取り出して 構いません。 (B) 次に同様に(1)から(4)までを実行します。そのとき、 重さ1gのものと一緒にペアになったものを残し、 重り1gの重りは除きます。除いたものにはチェックを 入れます。以降同様に行い、最小の 重さを出します。その結果、重さ2gの重りが決定 され、期待値に2gを設定します。 (C) 以下同様にして重さが判明したものと判明していないものが ペアになった場合は重さが判明していないものを残します。 除いたものにはチェックを入れます。 (D) 以下同様にして、(1)から(4)までを実行し、重さが判明し たもの同士が選択された場合は、便宜上、重いほうの重り を残します。除いたものにはチェックを入れます。 (E) 重りが判定されるごとに最小値を一つ上げます。 以下、(1)から(4)までを(C)(D)(E)の方法に沿って 実行します。(1)から始めるときはチェックをはずして おきます。(E)はとくには必要ないかも知れませんが。 関数で最小値を取り出したり、関数内で最小値を 計算して取り出してもいいかと。 これだけですが。これをExcelでというならば 質問者さんでもコードが組めるのでは? 私は、面倒くさいからAccessで1から16までのIDの フィールド、それぞれのIDにランダムに設定した 重りのフィールド、期待値を記入するフィールド、 はずした重りをチェックしておくフィールドで テーブルを設定し、VBAだけでコードを組みました。 再帰関数と、いくつかの関数で終わりです。 ただし、再帰関数は中で入れ子のループが グルグル回り、一方で、データを行ったり来たり していますが。 いかがですか。Excelでコードを組んでみては。 お正月で時間があるならば、トランプで1から16までの 赤と黒のカードを用意し、黒のカードを十分に切り、 2枚づつ取り出すことで、最初の(1)から(4)までを実行し、 最後に残ったカードを赤に変え、再び(1)から(4)までを (C)(D)(E)の方法に沿って、実行してみてください。 途中でカードを切り直しても結構です。

関連するQ&A

  • おもりのつりあい

    まっすぐな棒の中心に糸を取り付け、天井につるすと、棒は傾かずに水平を保ちました。 この状態から左の腕に支点から左に12cmのところに重さ300gのおもりAをつるし、右の腕に支点から右に2cmのところに重さがわからないおもりDを、支点から右に17cmのところに重さがわからないおもりEをつるしたところ、棒は傾かずに水平を保ちました また、左の腕に支点から左に13cmのところに重さ300gのおもりAをつるし、右の腕に支点から右に5cmのところに重さがわからないおもりDを、支点から右に17cmのところに重さがわからないおもりEをつるした場合も、棒は傾かずに水平を保ちました おもりDとおもりEの重さを求めなさい ↑これがわかりません!!(図はかけないので自分で問題の文章を作ってます)誰か求め方と答え教えてください!!!

  • ABCのおもりがあります

    ABCのおもりがあります ABCそれぞれ1個ずつの重さは合計75グラム 天秤ばかりの左のさらにA C一個ずつ乗せ右のさらにBを4個でつりあう 次に左にAB 2個ずつ乗せたものとcがつりあう Aの重さは? という問いで A+B+C=75 A+C=4B 2A+2B=C A+2A+2B=4B 3A=2B 2A+3A=C A+B+5A=75 までわかりますが このあとどうしたらよいですか

  • VBAで順位の期待値を出したい。

    VBAを使おうと思いましたがさっぱりわからず困っています。やりたい事はA1からP1の16セルに順位の期待値を出す事です。方法はこうです。まず1から16までをA1からP1までに重複しないようにあてはめ、全組み合わせの平均を出します。そうすると(8、5)、(8、5)、・・・となるはずです。次に大小の条件を付けます。例えばAがBに勝ったとしてA1<B1という条件を付けます。これだけで組み合わせが半減し、平均がA1から(5、67)、(11、33)、(8、5)、(8、5)、・・・となるはずです。さらにどんどん大小の条件を付け、組み合わせを絞り込みます。それで平均を出します。大小条件は簡単に入力出来た方がいいです。これらを可能にするにはどうしたら良いでしょうか?

  • この問題を解いてください。お願いしますm(--)m

    天秤がひとつあります。これで1グラムから13グラムまでの13通りの整数値の重さ(1,2,3、…13g)をすべてはかれるようにしたい。どのような重さの分銅(重り)を揃えら良いか? (1)、揃えておく分銅の数が最も少なくなる場合の分銅の組み合わせを示せ。 (2)、その個数が最小個数であることを証明せよ。 (3)、(1)の組み合わせをすべて求めそれがすべてであることを示せ。 (4)、40グラムにしたらどうなるか。(1~40までの40通りがはかれるように    する。) (5)、この問題をネタに好きなように論じてみろ。(一般化したり拡張化した     り・・・)論じてみよ。例えば上の13とか40に特別な意味があるだろうか    など。 <ヒント>     例えば5グラムの分銅と7グラムの分銅ではかれる重さは5と7、12の三    つだけではありません。右の皿に5グラム、左に7グラムをのせることに    より、2グラムもはかれます。   どうしてもこの問題が解けずに困っているので教えてください。

  • 錘の貼り方

    この間、この質問表でお伺いしたところ自分に合ったラケットはピュアストームツアーってことになりました。打ち心地も抜群ですし、ぶれもありません。しかしこの間、重さを量ってみたところ二本(二本買いました)とも重さが3gづつ違うことに気づきました。錘をつけてバランスを整えたいのですが、どこに貼ったらいいのかわかりません。それに、ヘッドが軽いのかグリップのほうが重いのかもわかりません。どなたか錘をどこに張ればいいのかわかりますか? ちなみに自分は、ハードヒッター、ベースラインストローカー、フラットタイプです。 ガットは、バボラからのプロハリケーン&VSタッチのハイブリットを60pで貼って、振動止めは同じくバボラのカスタムバンプを使っています。グリップは2で、オーバーグリップを貼っています。 よろしくお願いします

  • VBA作製ができません。どなたか教えてください。

    エクセルVBA作製ができません。どなたか教えてください。 会社の作業単純化のためにVBA作製しようと思ったものの、うまくできません。出来る方ならすぐ出来てしまうのではと思い質問させていただきます。 作りたいのは1つのファイル「Book1」にあるデータをコマンドボタンを押すと「Book2」にコピーさせたいのですが、 条件がありまして、 「Book1」には横並びに5個のセルに数字がそれぞれ入っていたり、いなかったりするのですが、 5個のうちいちばん左のセルに数字が入っていたら実行、入っていなかったらその右のセルにセルを移動するという式if then?で場合分けをしたいです。 そして、もし実行ならその数字や他の任意のA1、G4、H6(ちなみA1、G4、H6は文字)など指定したセルをコピーして「Book2」にペーストしたいです。 しかしそこでペーストする先の指定したセルに文字が入っていたらその 下のセルにペーストという条件も加えたいです。ここでloopを使う? コピーペースト出来たら、また、「Book1」のいちばん左の右のセルに数字が入っているかどうかでコピーペーストをするという作業を繰り返したいです。なのでいちばん最初にFor Nextで5回繰り返す式を入れる? 要はBook1の5個の数字を参照していってセルに入力されていれば 数字や他の文字をBook2にペーストしたいんです。どなたかVBAの式を教えてください。 宜しくお願いします。

  • キーボードが押されたことの感知(エクセルVBA)

    キーボードが押されたことを、イベントとするマクロってできるのでしょうか?例えば、ctlキーが押されたら、"押されました"、離されたら”離れました”って表示する方法をご伝授願えればと思います。どなたか、VBAに詳しい方、宜しくお願いいたします。また、感知することが出来ないキーや、右や左で判別できない(例えば、shiftキー)キーもあるのでしょうか?

  • 物理学(おもり、滑車)について

    下記の問題の解き方、できれば答えまでの過程も教えて下さい。 1.下図左に示すように、滑車にかけたひもの両端に皿をつけ、一方の皿に 質量mのおもりA、Bを重ねてのせ、他方の皿に質量mのおもりCをのせた装置がある。 おもりAB間に働く力Rを求めよ。但し、ひも、皿、滑車の質量と摩擦は無視出来るものとする。 (答え:R = (2/3)mg) 2.下図右に示すように定滑車にひもをかけその両端にm1=11kg、m2=9kgのおもりをつける。 この滑車に力F=196Nを作用させ上方に引き上げるとき、おもりに生じる加速度を求めよ。 ひも、及び滑車の質量、摩擦は無視出来るものとし、重力加速度gは9.8m/s^2とする。 また下図における 加速度a1は定滑車に対するおもりの相対加速度を示し、a2は装置全体の 加速度である。 (答え:a1=0.990m/s^2, a2=0.0990m/s^2, おもり1:0.891m/s^2 下方, おもり2:1.09m/s^2 上方) (自分の解いたやりかた) 1.おもりA:ma = mg - R・・・(1) B:ma = mg - R・・・(2) C:ma = R - mg・・・(3) (1)+(2)+(3) 3ma = mg - R 2. 全体:(m1+m2)a2 = F + 2T - (m1 + m2)g それぞれのおもり:m1a1 = m1g - T m2a2 = T - m2g

  • 分割された別の作業領域にボタン登録のVBAで入力

    VBA初心者なのですが、ググってもよく解らなかったので教えてください。 EXCEL(XPです)には、左右と、上下に作業領域を分割出来ますが、 例えば、右の作業領域にVBA登録のボタンを配置し VBAの記述で左作業領域のアクティブなセルに入力させる事は出来ますか? 出来るとすると、 ActiveCell.Value = 1 この他に何を記述してあげればいいのでしょうか?

  • 期待値

    X  1 2 3 4 5 確率 p q p p q ある確率変数Xの確率分布が右の表で与えられている Xの期待値が3.2であるときP、Qの値を求めよ。 この問題で8p+7q=3.2 という式まではでてくるのですが最終的な値がどうしてもでないので、どなたかわかる方は解説よろしくおねがいいたします

専門家に質問してみよう