重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

映画館で洋画6作品を上映中で、これら6作品の前売り券を、A君は無作為に2作品を選び1枚ずつ購入、B君は無作為に3作品を選び1枚ずつ購入、C君は無作為に5作品を選び1枚ずつ購入、病気がちなD君は無作為に3作品を選び1枚ずつ購入するのですが、映画鑑賞予定日直前にD君が危篤に陥り、D君が購入した前売り券をA君、B君、C君に1枚ずつ譲り渡すことになる場合、A君、B君、C君がみなうまいこと自分が選ばなかった作品の前売り券を譲ってもらえる確率ってどうなりますか?

A 回答 (19件中1~10件)

#6です。



>A君はB君の被った1作品が譲り渡される必要があるので、残る5作日から1作品を選ぶ組み合わせの₅C₁通り。

確かにそうですね。

₆C₅・₅C₂・(₄C₃・(₆C₂ - 1) + 2・₄C₂・₅C₂)
= 6・10・(4・(15 - 1) + 2・6・10)
= 10560

だから、10560/36000 = 22/75 ≒ 0.2933 か。

#9さんのシミュレーション結果とも合いますね。
    • good
    • 0
この回答へのお礼

あなたに会えてよかった

ありがとうございました。
1人ではとても筋道立てて考えられないので教えてもらえて大変勉強になりました。

お礼日時:2021/09/28 10:23

#18様



目からウロコです。私は重複カウントにばかり目が奪われていて、そこを見直しすることが出来ていませんでした。

素晴らしい!
スッキリしました。ありがとうございました。
    • good
    • 0

#12さんの計算は、最初のケースの計算が間違っています。



> ●●●●〇〇
> 〇〇〇●●●
> このケースは全部で、6C1 * 6C0(重複×空白)

このケースは、A君のユニーク部分3枚、B君のユニーク部分2枚、A君とB君の重複部分1枚を選ぶので、
6!/(3!・1!・2!)
となります。
他も同様で、それぞれ次のようになります。

> ●●●●〇〇
> 〇〇●●●〇
> このケースは全部で、6C2 * 6C1

6!/(2!・2!・1!・1!)

> ●●●●〇〇
> 〇●●●〇〇
> このケースは全部で、6C3 * 6C2

6!/(1!・3!・2!)

そこを修正すれば、正しく10560通りと計算されます。
    • good
    • 1

#14です。

→ #15です。

ごめんなさい。↑訂正します。
    • good
    • 0

#14です。



私も独自の方法で数え上げたら、10560でした。
私の図式解が間違っていました。

やっぱり妙な気がしていた重複(どれかのパターンにハマれば良いのをダブルカウントしている)だと思いますが、直すことができていないので長考中です。

なお、数え上げに用いたRスクリプトは次のとおりです。
私は2進法を使って、全パターンを列挙してふるい落としました。

~~~~~~~~~~~~~~~~~~~~~~~~

# 総ヒット件数の数え上げ(愚直に)

dec2bin <- function(num, digit = 0){
if(num <= 0 && digit <= 0){
return(NULL)
}else{
return(append(Recall(num %/% 2,digit-1), num %% 2))
}}


# A,B,Cの購入パターンを全て列挙する

x <- NULL

for(i in 1:63){
for(j in 1:63){
for(k in 1:63){

A <- dec2bin(i, 6)
B <- dec2bin(j, 6)
C <- dec2bin(k, 6)

if(sum(A) == 4 & sum(B) == 3 & sum(C) == 1){
x <- rbind(x, c(A, B, C))
}
}}}

head(x)
(n <- nrow(x)) # 1800とおり


# Dの購入パターンを全て列挙する

y <- NULL

for(h in 1:63){
D <- dec2bin(h, 6)

if(sum(D) == 3){
y <- rbind(y, c(D))
}
}

y
(m <- nrow(y)) # 20とおり


# チェックパターンを準備する(このどれかにヒットすれば良い)

check <- matrix(c(
1, 2, 3,
1, 3, 2,
2, 1, 3,
2, 3, 1,
3, 1, 2,
3, 2, 1),
ncol = 3, byrow = T)


# 各xに関してマッチするyを数え上げる

count <- 0

for(k in 1:n){
result <- 0

for(l in 1:m){
index <- which(y[l, ] == 1)
temp <- NULL

for(g in 1:6){
y1 <- y2 <- y3 <- matrix(c(0, 0, 0, 0, 0, 0), ncol = 6)
y1[index[check[g, 1]]] <- 1
y2[index[check[g, 2]]] <- 1
y3[index[check[g, 3]]] <- 1

temp <- append(temp, x[k, 1:6] %*% t(y1) * x[k, 7:12] %*% t(y2) * x[k, 13:18] %*% t(y3))
}

result <- result + ifelse(sum(temp) > 0, 1, 0)
}

count <- count + result
}

count
    • good
    • 0

#14様、



そうですよねぇ。私のどこがまずかったのか、自分でも総当たりをやって確認してみます。

ちなみに、私もRです。
    • good
    • 0

気になったので、Rで全部の組み合わせを確認しましたが、やはり10560通りでした。


用いたコードは次のとおり。

A <- combn(6, 4) # A君が購入しなかった前売り券の組み合わせ
B <- combn(6, 3) # B君が購入しなかった前売り券の組み合わせ
C <- combn(6, 1) # C君が購入しなかった前売り券の組み合わせ
D <- combn(6, 3) # D君が購入した前売り券の組み合わせ

i <- 0
cnt <- 0 # 該当ケースカウント用

# D君の前売り券のA君、B君、C君への配布パターン全て
x <- matrix(c(
T, F, F, F, T, F, F, F, T,
T, F, F, F, F, T, F, T, F,
F, T, F, T, F, F, F, F, T,
F, T, F, F, F, T, T, F, F,
F, F, T, T, F, F, F, T, F,
F, F, T, F, T, F, T, F, F), ncol = 9, byrow = T)

# 全部の組み合わせを確認する
for(nA in 1:ncol(A)) {
for(nB in 1:ncol(B)) {
for(nC in 1:ncol(C)) {
for(nD in 1:ncol(D)) {
# D君の前売り券を各自購入していないかチェック
y <- c(
D[, nD] %in% A[, nA],
D[, nD] %in% B[, nB],
D[, nD] %in% C[, nC]
)
# 配布パターンのどれかがに合えば cnt を+1
cnt <- cnt + any(apply(x, 1, function(z) all(y[z])))
i <- i + 1

# チェック用
if(i %% 1000 == 0) {
cat("i = ", i, "\n")
cat("A = ", A[, nA], "\n")
cat("B = ", B[, nB], "\n")
cat("C = ", C[, nC], "\n")
cat("D = ", D[, nD], "\n")
cat("y = ", y, "\n")
print(any(apply(x, 1, function(z) all(y[z]))))
cat("\n")
}
}
}
}
}

cnt
    • good
    • 0

#12です。



追加情報です。シミュレーションの回数を増やしたら、

0.2969

という数値が出てきました。0.297くらいの数値になると思われます。

私の解いた理論値に、少し自信が出てきました。
    • good
    • 0

#9です。



理論値を計算しました。

生起しうる場合の数は、10704とおり、
全ての場合の数が36000だから、率としては、0.2973333 となりました。(#10さんとやや違いますね。私が間違っているような気がします。)


気になるのは、x41、x61、x71は重複してるかなあ、という点です。
しかし、これを区別しないなら、x81とx91の区別が必要なくなる訳で、やっぱり場合ごとに足していくべきかと思いました。場合分けして全部で6とおり(◎〇の横に書いてある数字を足すと6)にしているのですから・・・。

~~理論値~~

A君の買い漏らし4枚●、B君の買い漏らし3枚●、C君の買い漏らし1枚◎の重複のパターンを考える。
C君が得たチケット◎の残りからA君B君が選ぶとき、重複したところから選ぶときは、残りはどれでも良く、重複したところから選ばない場合は、A君B君のユニークな部分からそれぞれ1枚ずつ選ぶ。

●●●●〇〇
〇〇〇●●●
このケースは全部で、6C1 * 6C0(重複×空白)
ただし、C君の出現パターンを考慮すると
●●●●〇〇
〇〇〇●●●
◎〇〇〇〇〇 3とおり(以下略)
〇〇〇◎〇〇 1
〇〇〇〇◎〇 2

_______重複部分から___ユニーク部分から
x11 <- choose(1, 1) * choose(4, 1)
x12 <-        choose(2, 1) * choose(2, 1)
x21 <-        choose(3, 1) * choose(2, 1)
x31 <- choose(1, 1) * choose(4, 1)
x32 <-        choose(3, 1) * choose(1, 1)

x1 <- (3 * (x11 + x12) + x21 + 2 * (x31 + x32)) * choose(6, 1)


●●●●〇〇
〇〇●●●〇
このケースは全部で、6C2 * 6C1
ただし、C君の出現パターンを考慮すると
●●●●〇〇
〇〇●●●〇
◎〇〇〇〇〇 2
〇〇◎〇〇〇 2
〇〇〇〇◎〇 1
〇〇〇〇〇◎ 1

_______重複部分から___ユニーク部分から
x41 <- choose(2, 2)
x42 <- choose(2, 1) * choose(2, 1)
x43 <-        choose(1, 1) * choose(1, 1)
x51 <- choose(1, 1) * choose(3, 1)
x52 <-        choose(2, 1) * choose(1, 1)
x61 <- choose(2, 2)
x62 <- choose(2, 1) * choose(2, 1)
x71 <- choose(2, 2)
x72 <- choose(2, 1) * choose(3, 1)
x73 <-        choose(2, 1) * choose(1, 1)

x2 <- (2 * (x41 + x42 + x43) + 2 * (x51 + x52) + x61 + x62 + x71 + x72 + x73) * choose(6, 2) * choose(6, 1)


●●●●〇〇
〇●●●〇〇
このケースは全部で、6C3 * 6C2
ただし、C君の出現パターンを考慮すると
●●●●〇〇
〇●●●〇〇
◎〇〇〇〇〇 1
〇◎〇〇〇〇 3
〇〇〇〇◎〇 2

_______重複部分から___ユニーク部分から
x81 <- choose(3, 2)
x91 <- choose(2, 2)
x92 <- choose(2, 1) * choose(1, 1)
x101<- choose(3, 2)
x102<- choose(3, 1) * choose(1, 1)

x3 <- (x81 + 3 * (x91 + x92) + 2 * (x101 + x102)) * choose(6, 3) * choose(6, 2)

(x1 + x2 + x3)
    • good
    • 0

#10一部修正



>>A君はB君の被った1作品が譲り渡される必要があるので、残る5作日から1作品を選ぶ組み合わせの₅C₁通り。

> これがおかしい気がします。

確かにそうですね。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!