การสรุปกรณีที่อธิบายโดย Dilip Sarwate
วิธีการบางอย่างที่อธิบายไว้ในคำตอบอื่น ๆ ใช้รูปแบบที่คุณโยนลำดับของเหรียญใน 'เทิร์น' และขึ้นอยู่กับผลที่คุณเลือกตัวเลขระหว่าง 1 หรือ 7 หรือทิ้งการหมุนและโยนอีกครั้งn
เคล็ดลับคือจะหาได้ในการขยายตัวของความเป็นไปได้หลาย 7 ผลแบบเดียวกับที่ความน่าจะเป็นและตรงกับแต่ละอื่น ๆpk(1−p)n−k
เนื่องจากจำนวนผลลัพธ์ทั้งหมดนั้นไม่ใช่ผลคูณของ 7 เราจึงมีผลลัพธ์ไม่กี่อย่างที่เราไม่สามารถกำหนดให้กับตัวเลขได้และมีความเป็นไปได้ที่เราต้องทิ้งผลลัพธ์และเริ่มต้นใหม่
กรณีของการใช้ 7 เหรียญพลิกต่อเทิร์น
เราสามารถบอกได้ว่าการกลิ้งลูกเต๋าเจ็ดครั้งนั้นน่าสนใจมาก เนื่องจากเราจะต้องโยนออก 2 ออกจากความเป็นไปได้ กล่าวคือหัว 7 ครั้งและ 0 ครั้งหัว27
สำหรับความเป็นไปได้อื่น ๆ ทั้งหมดของนั้นจะมีหลายกรณี 7 กรณีที่มีจำนวนหัวเท่ากันเสมอ แบ่งออกเป็น 7 กรณีมี 1 หัว, 21 รายมี 2 หัว, 35 รายมี 3 หัว, 35 รายมี 4 หัว, 21 รายมี 5 หัวและ 7 รายมี 6 หัว27−2
ดังนั้นถ้าคุณคำนวณจำนวน (ทิ้ง 0 หัวและ 7 หัว)X=∑k=17(k−1)⋅Ck
ด้วย Bernoulli ตัวแปรกระจาย (ค่า 0 หรือ 1) จากนั้น X modulo 7 เป็นตัวแปรชุดที่มีเจ็ดผลลัพธ์ที่เป็นไปได้Ck
เปรียบเทียบจำนวนการโยนเหรียญที่แตกต่างกันต่อเทิร์น
คำถามยังคงเป็นสิ่งที่จำนวนม้วนที่เหมาะสมที่สุดต่อรอบจะเป็นอย่างไร การหมุนลูกเต๋าสี่เหลี่ยมลูกเต๋าต่อเทิร์นจะทำให้คุณเสียค่าใช้จ่ายมากขึ้น แต่คุณลดโอกาสที่จะต้องหมุนอีกครั้ง
ภาพด้านล่างแสดงการคำนวณด้วยตนเองสำหรับการโยนเหรียญสองถึงสามครั้งแรกต่อเทิร์น (อาจจะมีวิธีการวิเคราะห์ แต่ฉันเชื่อว่ามันปลอดภัยที่จะบอกว่าระบบที่มีการโยน 7 เหรียญให้วิธีที่ดีที่สุดเกี่ยวกับค่าความคาดหวังสำหรับจำนวนการโยนเหรียญที่จำเป็น)
# 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)
}
ใช้กฎการหยุดก่อน
หมายเหตุ: การคำนวณด้านล่างสำหรับค่าความคาดหวังของจำนวนการโยนสำหรับเหรียญที่เป็นธรรมมันจะกลายเป็นความยุ่งเหยิงเมื่อต้องทำสิ่งนี้สำหรับแตกต่างกันแต่หลักการยังคงเหมือนเดิม (แม้ว่าการเก็บหนังสือที่แตกต่างกัน กรณีจำเป็น)p=0.5p
เราควรจะสามารถเลือกเคส (แทนที่จะเป็นสูตรสำหรับ ) เพื่อที่เราจะได้หยุดก่อนหน้านี้X
ด้วยการโยนเหรียญ 5 ครั้งเรามีหัวและก้อยที่ไม่เรียงลำดับหกชุดที่เป็นไปได้:
1 + 5 + 10 + 10 + 5 + 1 ชุดที่สั่ง
และเราสามารถใช้กลุ่มที่มีสิบกรณี (นั่นคือกลุ่มที่มี 2 หัวหรือกลุ่มที่มี 2 ก้อย) เพื่อเลือกจำนวน (ที่มีความน่าจะเป็นเท่ากัน) สิ่งนี้เกิดขึ้นใน 14 จาก 2 ^ 5 = 32 ราย สิ่งนี้ทำให้เรามี:
1 + 5 + 3 + 3 + 5 + 1 ชุดที่สั่ง
ด้วยการพลิกเหรียญพิเศษ (6-th)เรามีเจ็ดชุดที่ไม่ได้เรียงกันของหัวและก้อย:
1 + 6 + 8 + 6 + 8 + 6 + 1 ชุดที่สั่ง
และเราสามารถใช้กลุ่มที่มีแปดกรณี (นั่นคือกลุ่มที่มี 3 หัวหรือกลุ่มที่มี 3 ก้อย) เพื่อเลือก (ที่มีความน่าจะเป็นเท่ากัน) เป็นตัวเลข สิ่งนี้เกิดขึ้นใน 14 จาก 2 * (2 ^ 5-14) = 36 ราย สิ่งนี้ทำให้เรามี:
1 + 6 + 1 + 6 + 1 + 6 + 1 ชุดที่สั่ง
ด้วยการพลิกเหรียญพิเศษอีกครั้ง (7-th)เรามีแปดชุดที่ไม่ได้เรียงกันของหัวและก้อย:
1 + 7 + 7 + 7 + 7 + 7 + 7 + 1 ชุดที่สั่ง
และเราสามารถใช้กลุ่มที่มีเจ็ดกรณี (ทั้งหมดยกเว้นก้อยทั้งหมดและหัวทุกกรณี) เพื่อเลือก (ที่มีความน่าจะเป็นเท่ากัน) จำนวนหนึ่ง เรื่องนี้เกิดขึ้นใน 42 จาก 44 กรณี สิ่งนี้ทำให้เรามี:
1 + 0 + 0 + 0 + 0 + 0 + 0 + 1 ชุดที่สั่ง
(เราสามารถทำสิ่งนี้ต่อไปได้ แต่ในขั้นตอนที่ 49 เท่านั้นที่ทำให้เราได้เปรียบ)
ความน่าจะเป็นที่จะเลือกตัวเลข
- ที่ 5 flips คือ1432=716
- ที่ 6 flips คือ9161436=732
- ที่ 7 flips คือ11324244=231704
- ไม่ได้อยู่ใน 7 flips คือ1−716−732−231704=227
สิ่งนี้ทำให้ค่าการคาดหวังสำหรับจำนวนการพลิกในครั้งเดียวโดยมีเงื่อนไขว่ามีความสำเร็จและ p = 0.5:
5⋅716+6⋅732+7⋅231704=5.796875
ค่าความคาดหวังสำหรับรวมจำนวนพลิก (จนกว่าจะมีความสำเร็จ) ตามเงื่อนไขที่ p = 0.5, กลายเป็น:
(5⋅716+6⋅732+7⋅231704)2727−2=539=5.88889
คำตอบโดย NcAdams ใช้รูปแบบของกลยุทธ์การหยุดกฎนี้ (แต่ละครั้งมาพร้อมกับการโยนเหรียญสองครั้งใหม่) แต่ไม่ได้เลือกการโยนทั้งหมดอย่างเหมาะสม
คำตอบโดย Clid อาจคล้ายกันแม้ว่าอาจจะมีกฎการเลือกที่ไม่สม่ำเสมอที่เหรียญสองเหรียญจะพลิกจำนวนหนึ่งอาจเลือกได้ แต่ไม่จำเป็นต้องมีโอกาสเท่ากัน (ความคลาดเคลื่อนซึ่งกำลังได้รับการซ่อมแซมในระหว่างการโยนเหรียญในภายหลัง)
เปรียบเทียบกับวิธีอื่น ๆ
วิธีการอื่นที่ใช้หลักการที่คล้ายกันก็คือวิธีหนึ่งโดย NcAdams และ AdamO
หลักการคือ : การตัดสินใจสำหรับจำนวนระหว่าง 1 และ 7 จะทำหลังจากจำนวนหัวและก้อย หลังจากการพลิกจำนวนสำหรับการตัดสินใจแต่ละครั้งที่นำไปสู่หมายเลขการตัดสินใจที่คล้ายกันน่าจะเท่าเทียมกันนำไปสู่หมายเลข (จำนวนหัวและก้อยเท่ากัน แต่เรียงตามลำดับที่แตกต่างกัน) หัวและก้อยบางชุดสามารถนำไปสู่การตัดสินใจเริ่มต้นใหม่xij
สำหรับวิธีการดังกล่าวประเภทที่วางไว้ที่นี่มีประสิทธิภาพมากที่สุดเพราะทำให้การตัดสินใจเร็วที่สุดเท่าที่จะทำได้ (ทันทีที่มีความเป็นไปได้สำหรับลำดับความน่าจะเป็นที่เท่าเทียมกัน 7 อันของหัวและก้อยหลังจากการพลิก -th เราสามารถใช้ พวกเขาเพื่อทำการตัดสินใจเกี่ยวกับตัวเลขและเราไม่จำเป็นต้องพลิกกลับไปอีกถ้าเราเจอหนึ่งในกรณีเหล่านั้น)x
นี่คือภาพและการจำลองด้านล่างนี้:
#### 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)
}
รูปภาพอื่นที่ถูกปรับอัตราส่วนโดยเพื่อการเปรียบเทียบที่ดีกว่า:p∗(1−p)
ขยายวิธีเปรียบเทียบที่อธิบายไว้ในโพสต์และความคิดเห็นนี้
'การข้ามเงื่อนไขของขั้นตอนที่ 7' เป็นการปรับปรุงเล็กน้อยซึ่งสามารถทำได้ในกฎการหยุดก่อน ในกรณีนี้คุณไม่ได้เลือกกลุ่มที่มีความน่าจะเป็นเท่ากับหลังจากการพลิกครั้งที่ 6 คุณมี 6 กลุ่มที่มีความน่าจะเป็นที่เท่ากันและ 1 กลุ่มที่มีโอกาสแตกต่างกันเล็กน้อย (สำหรับกลุ่มสุดท้ายนี้คุณต้องพลิกอีกหนึ่งช่วงเวลาพิเศษเมื่อคุณมี 6 หัวหรือก้อยและเนื่องจากคุณทิ้ง 7 หัวหรือ 7 ก้อยคุณจะจบ ขึ้นกับความน่าจะเป็นที่เหมือนกันหลังจากทั้งหมด)
เขียนโดยStackExchangeStrike