Generalisasi kasus yang dijelaskan oleh Dilip Sarwate
Beberapa metode yang dijelaskan dalam jawaban lain menggunakan skema di mana Anda melempar urutan n koin dalam 'belokan' dan tergantung pada hasil Anda memilih angka antara 1 atau 7 atau membuang belokan dan melempar lagi.
Kuncinya adalah menemukan dalam perluasan kemungkinan kelipatan 7 hasil dengan probabilitas yang sama pk(1−p)n−k dan mencocokkannya dengan satu sama lain.
Karena jumlah total hasil bukan kelipatan 7, kami memiliki beberapa hasil yang tidak dapat kami tetapkan ke suatu angka, dan memiliki beberapa probabilitas bahwa kami perlu membuang hasil dan memulai lagi.
Kasus menggunakan 7 koin membalik per giliran
Secara intuitif kita bisa mengatakan bahwa melempar dadu tujuh kali akan sangat menarik. Karena kita hanya perlu membuang 2 dari 27 kemungkinan. Yakni, 7 kali head dan 0 kali head.
Untuk semua kemungkinan selalu ada kelipatan 7 kasus dengan jumlah kepala yang sama. Yaitu 7 kasus dengan 1 kepala, 21 kasus dengan 2 kepala, 35 kasus dengan 3 kepala, 35 kasus dengan 4 kepala, 21 kasus dengan 5 kepala, dan 7 kasus dengan 6 kepala.27−2
Jadi jika Anda menghitung angka (membuang 0 kepala dan 7 kepala)X=∑k=17(k−1)⋅Ck
dengan variabel terdistribusi Bernoulli (nilai 0 atau 1), maka X modulo 7 adalah variabel seragam dengan tujuh kemungkinan hasil.Ck
Membandingkan jumlah flips koin yang berbeda per giliran
Pertanyaannya adalah berapa jumlah gulungan optimal per giliran. Menggulirkan lebih banyak dadu per gilirannya akan membuat Anda lebih mahal, tetapi Anda mengurangi kemungkinan harus berguling lagi.
Gambar di bawah ini menunjukkan perhitungan manual untuk beberapa angka pertama flips koin per giliran. (mungkin mungkin ada solusi analitis, tapi saya yakin aman untuk mengatakan bahwa sistem dengan 7 membalik koin memberikan metode terbaik mengenai nilai ekspektasi untuk jumlah membalik koin yang diperlukan)
# plot an empty canvas
plot(-100,-100,
xlab="flips per turn",
ylab="E(total flips)",
ylim=c(7,400),xlim=c(0,20),log="y")
title("expectation value for total number of coin flips
(number of turns times flips per turn)")
# loop 1
# different values p from fair to very unfair
# since this is symmetric only from 0 to 0.5 is necessary
# loop 2
# different values for number of flips per turn
# we can only use a multiple of 7 to assign
# so the modulus will have to be discarded
# from this we can calculate the probability that the turn succeeds
# the expected number of flips is
# the flips per turn
# divided by
# the probability for the turn to succeed
for (p in c(0.5,0.2,0.1,0.05)) {
Ecoins <- rep(0,16)
for (dr in (5:20)){
Pdiscards = 0
for (i in c(0:dr)) {
Pdiscards = Pdiscards + p^(i)*(1-p)^(dr-i) * (choose(dr,i) %% 7)
}
Ecoins[dr-4] = dr/(1-Pdiscards)
}
lines(5:20, Ecoins)
points(5:20, Ecoins, pch=21, col="black", bg="white", cex=0.5)
text(5, Ecoins[1], paste0("p = ",p), pos=2)
}
Menggunakan aturan penghentian awal
catatan: perhitungan di bawah ini, untuk nilai ekspektasi jumlah flips, adalah untuk koin yang adil , itu akan menjadi berantakan untuk melakukan hal ini untuk berbeda , tetapi prinsipnya tetap sama (meskipun pembukuan yang berbeda dari kasus diperlukan)p=0.5p
Kita harus bisa memilih kasing (bukan rumus untuk ) sehingga kita bisa berhenti lebih awal.X
Dengan 5 koin membalik kita miliki untuk enam set kepala dan ekor yang tidak berurutan yang berbeda:
1 + 5 + 10 + 10 + 5 + 1 set yang dipesan
Dan kita dapat menggunakan kelompok dengan sepuluh kasus (yaitu kelompok dengan 2 kepala atau kelompok dengan 2 ekor) untuk memilih (dengan probabilitas yang sama) angka. Ini terjadi pada 14 dari 2 ^ 5 = 32 kasus. Ini membuat kita dengan:
1 + 5 + 3 + 3 + 5 + 1 set yang dipesan
Dengan flip koin ekstra (6-th) yang kami miliki untuk tujuh set kepala dan ekor unordered yang berbeda:
1 + 6 + 8 + 6 + 8 + 6 + 1 set yang dipesan
Dan kita dapat menggunakan kelompok dengan delapan kasus (yaitu kelompok dengan 3 kepala atau kelompok dengan 3 ekor) untuk memilih (dengan probabilitas yang sama) angka. Ini terjadi pada 14 dari 2 * (2 ^ 5-14) = 36 kasus. Ini membuat kita dengan:
1 + 6 + 1 + 6 + 1 + 6 + 1 set yang dipesan
Dengan flip koin ekstra lain (7-th) yang kami miliki untuk delapan set kepala dan ekor unordered yang berbeda:
1 + 7 + 7 + 7 + 7 + 7 + 7 + 1 set yang dipesan
Dan kita dapat menggunakan kelompok dengan tujuh kasus (semua kecuali semua ekor dan semua kasus kepala) untuk memilih (dengan probabilitas yang sama) angka. Ini terjadi pada 42 dari 44 kasus. Ini membuat kita dengan:
1 + 0 + 0 + 0 + 0 + 0 + 0 + 1 set pesanan
(kita bisa melanjutkan ini tetapi hanya pada langkah ke-49 hal ini memberi kita keuntungan)
Jadi probabilitas untuk memilih nomor
- pada 5 membalik adalah 1432=716
- pada 6 membalik adalah 9161436=732
- pada 7 membalik adalah 11324244=231704
- tidak dalam 7 membalik adalah 1−716−732−231704=227
Ini membuat nilai ekspektasi untuk jumlah flips dalam satu giliran, dengan syarat bahwa ada keberhasilan dan p = 0,5:
5⋅716+6⋅732+7⋅231704=5.796875
Nilai ekspektasi untuk jumlah total flips (sampai ada keberhasilan), dengan syarat bahwa p = 0,5, menjadi:
(5⋅716+6⋅732+7⋅231704)2727−2=539=5.88889
Jawaban oleh NcAdams menggunakan variasi dari strategi stopping-rule ini (setiap kali menghasilkan dua flips koin baru) tetapi tidak secara optimal memilih semua flips.
Jawaban oleh Clid mungkin serupa juga walaupun mungkin ada aturan pemilihan yang tidak rata bahwa masing-masing dua koin membalik nomor mungkin dipilih tetapi tidak harus dengan probabilitas yang sama (perbedaan yang sedang diperbaiki selama membalik koin kemudian)
Perbandingan dengan metode lain
Metode lain yang menggunakan prinsip serupa adalah yang dilakukan oleh NcAdams dan AdamO.
Prinsipnya adalah : Keputusan untuk angka antara 1 dan 7 dibuat setelah sejumlah kepala dan ekor. Setelah jumlah x membalik, untuk setiap keputusan yang mengarah ke nomor i ada keputusan yang sama, kemungkinan sama, yang mengarah ke nomor j (jumlah kepala dan ekor yang sama tetapi hanya dalam urutan yang berbeda). Beberapa seri kepala dan ekor dapat mengarah pada keputusan untuk memulai kembali.
Untuk jenis metode seperti itu, yang ditempatkan di sini adalah yang paling efisien karena membuat keputusan sedini mungkin (segera setelah ada kemungkinan untuk 7 urutan probabilitas kepala dan ekor yang sama, setelah flip ke- x , kita dapat menggunakan mereka untuk membuat keputusan pada nomor dan kita tidak perlu membalik lebih jauh jika kita menemukan salah satu dari kasus-kasus itu).
Ini ditunjukkan oleh gambar dan simulasi di bawah ini:
#### mathematical part #####
set.seed(1)
#plotting this method
p <- seq(0.001,0.999,0.001)
tot <- (5*7*(p^2*(1-p)^3+p^3*(1-p)^2)+
6*7*(p^2*(1-p)^4+p^4*(1-p)^2)+
7*7*(p^1*(1-p)^6+p^2*(1-p)^5+p^3*(1-p)^4+p^4*(1-p)^3+p^5*(1-p)^2+p^6*(1-p)^1)+
7*1*(0+p^7+(1-p)^7) )/
(1-p^7-(1-p)^7)
plot(p,tot,type="l",log="y",
xlab="p",
ylab="expactation value number of flips"
)
#plotting method by AdamO
tot <- (7*(p^20-20*p^19+189*p^18-1121*p^17+4674*p^16-14536*p^15+34900*p^14-66014*p^13+99426*p^12-119573*p^11+114257*p^10-85514*p^9+48750*p^8-20100*p^7+5400*p^6-720*p^5)+6*
(-7*p^21+140*p^20-1323*p^19+7847*p^18-32718*p^17+101752*p^16-244307*p^15+462196*p^14-696612*p^13+839468*p^12-806260*p^11+610617*p^10-357343*p^9+156100*p^8-47950*p^7+9240*p^6-840*p^5)+5*
(21*p^22-420*p^21+3969*p^20-23541*p^19+98154*p^18-305277*p^17+733257*p^16-1389066*p^15+2100987*p^14-2552529*p^13+2493624*p^12-1952475*p^11+1215900*p^10-594216*p^9+222600*p^8-61068*p^7+11088*p^6-1008*p^5)+4*(-
35*p^23+700*p^22-6615*p^21+39235*p^20-163625*p^19+509425*p^18-1227345*p^17+2341955*p^16-3595725*p^15+4493195*p^14-4609675*p^13+3907820*p^12-2745610*p^11+1592640*p^10-750855*p^9+278250*p^8-76335*p^7+13860*p^6-
1260*p^5)+3*(35*p^24-700*p^23+6615*p^22-39270*p^21+164325*p^20-515935*p^19+1264725*p^18-2490320*p^17+4027555*p^16-5447470*p^15+6245645*p^14-6113275*p^13+5102720*p^12-3597370*p^11+2105880*p^10-999180*p^9+371000
*p^8-101780*p^7+18480*p^6-1680*p^5)+2*(-21*p^25+420*p^24-3990*p^23+24024*p^22-103362*p^21+340221*p^20-896679*p^19+1954827*p^18-3604755*p^17+5695179*p^16-7742301*p^15+9038379*p^14-9009357*p^13+7608720*p^12-
5390385*p^11+3158820*p^10-1498770*p^9+556500*p^8-152670*p^7+27720*p^6-2520*p^5))/(7*p^27-147*p^26+1505*p^25-10073*p^24+49777*p^23-193781*p^22+616532*p^21-1636082*p^20+3660762*p^19-6946380*p^18+11213888*p^17-
15426950*p^16+18087244*p^15-18037012*p^14+15224160*p^13-10781610*p^12+6317640*p^11-2997540*p^10+1113000*p^9-305340*p^8+55440*p^7-5040*p^6)
lines(p,tot,col=2,lty=2)
#plotting method by NcAdam
lines(p,3*8/7/(p*(1-p)),col=3,lty=2)
legend(0.2,500,
c("this method calculation","AdamO","NcAdams","this method simulation"),
lty=c(1,2,2,0),pch=c(NA,NA,NA,1),col=c(1,2,3,1))
##### simulation part ######
#creating decision table
mat<-matrix(as.numeric(intToBits(c(0:(2^5-1)))),2^5,byrow=1)[,c(1:12)]
colnames(mat) <- c("b1","b2","b3","b4","b5","b6","b7","sum5","sum6","sum7","decision","exit")
# first 5 rolls
mat[,8] <- sapply(c(1:2^5), FUN = function(x) {sum(mat[x,1:5])})
mat[which((mat[,8]==2)&(mat[,11]==0))[1:7],12] = rep(5,7) # we can stop for 7 cases with 2 heads
mat[which((mat[,8]==2)&(mat[,11]==0))[1:7],11] = c(1:7)
mat[which((mat[,8]==3)&(mat[,11]==0))[1:7],12] = rep(5,7) # we can stop for 7 cases with 3 heads
mat[which((mat[,8]==3)&(mat[,11]==0))[1:7],11] = c(1:7)
# extra 6th roll
mat <- rbind(mat,mat)
mat[c(33:64),6] <- rep(1,32)
mat[,9] <- sapply(c(1:2^6), FUN = function(x) {sum(mat[x,1:6])})
mat[which((mat[,9]==2)&(mat[,11]==0))[1:7],12] = rep(6,7) # we can stop for 7 cases with 2 heads
mat[which((mat[,9]==2)&(mat[,11]==0))[1:7],11] = c(1:7)
mat[which((mat[,9]==4)&(mat[,11]==0))[1:7],12] = rep(6,7) # we can stop for 7 cases with 4 heads
mat[which((mat[,9]==4)&(mat[,11]==0))[1:7],11] = c(1:7)
# extra 7th roll
mat <- rbind(mat,mat)
mat[c(65:128),7] <- rep(1,64)
mat[,10] <- sapply(c(1:2^7), FUN = function(x) {sum(mat[x,1:7])})
for (i in 1:6) {
mat[which((mat[,10]==i)&(mat[,11]==0))[1:7],12] = rep(7,7) # we can stop for 7 cases with i heads
mat[which((mat[,10]==i)&(mat[,11]==0))[1:7],11] = c(1:7)
}
mat[1,12] = 7 # when we did not have succes we still need to count the 7 coin tosses
mat[2^7,12] = 7
draws = rep(0,100)
num = rep(0,100)
# plotting simulation
for (p in seq(0.05,0.95,0.05)) {
n <- rep(0,1000)
for (i in 1:1000) {
coinflips <- rbinom(7,1,p) # draw seven numbers
I <- mat[,1:7]-matrix(rep(coinflips,2^7),2^7,byrow=1) == rep(0,7) # compare with the table
Imatch = I[,1]*I[,2]*I[,3]*I[,4]*I[,5]*I[,6]*I[,7] # compare with the table
draws[i] <- mat[which(Imatch==1),11] # result which number
num[i] <- mat[which(Imatch==1),12] # result how long it took
}
Nturn <- mean(num) #how many flips we made
Sturn <- (1000-sum(draws==0))/1000 #how many numbers we got (relatively)
points(p,Nturn/Sturn)
}
gambar lain yang diskalakan dengan p∗(1−p) untuk perbandingan yang lebih baik:
perbesar metode perbandingan yang dijelaskan dalam pos dan komentar ini
'lompatan bersyarat dari langkah ke-7' adalah sedikit perbaikan yang dapat dilakukan pada aturan penghentian awal. Dalam hal ini Anda memilih bukan grup dengan probabilitas yang sama setelah membalik ke-6. Anda memiliki 6 grup dengan probabilitas yang sama, dan 1 grup dengan probabilitas yang sedikit berbeda (untuk grup terakhir ini Anda perlu membalik satu kali lagi ketika Anda memiliki 6 kepala atau ekor dan karena Anda membuang 7 kepala atau 7 ekor, Anda akan berakhir setelah itu dengan probabilitas yang sama)
Ditulis oleh StackExchangeStrike