นี่คือคำถาม:
คุณหมุนลูกเต๋า 6 ด้านอย่างยุติธรรมซ้ำ ๆ จนกว่าผลรวมของลูกเต๋าจะมีค่ามากกว่าหรือเท่ากับ M ค่าเฉลี่ยและค่าเบี่ยงเบนมาตรฐานของผลรวมลบด้วย M คืออะไรเมื่อ M = 300
ฉันควรเขียนรหัสเพื่อตอบคำถามประเภทนี้หรือไม่?
กรุณาให้คำแนะนำกับฉัน ขอบคุณ!
นี่คือคำถาม:
คุณหมุนลูกเต๋า 6 ด้านอย่างยุติธรรมซ้ำ ๆ จนกว่าผลรวมของลูกเต๋าจะมีค่ามากกว่าหรือเท่ากับ M ค่าเฉลี่ยและค่าเบี่ยงเบนมาตรฐานของผลรวมลบด้วย M คืออะไรเมื่อ M = 300
ฉันควรเขียนรหัสเพื่อตอบคำถามประเภทนี้หรือไม่?
กรุณาให้คำแนะนำกับฉัน ขอบคุณ!
คำตอบ:
แน่นอนคุณสามารถใช้รหัส แต่ฉันจะไม่จำลอง
ฉันจะไม่สนใจส่วน "ลบ M" (คุณสามารถทำได้อย่างง่ายดายพอในตอนท้าย)
คุณสามารถคำนวณความน่าจะเป็นที่เกิดซ้ำได้ง่ายมาก แต่คำตอบจริง (จนถึงระดับความแม่นยำสูง) สามารถคำนวณได้จากการใช้เหตุผลอย่างง่าย
ให้ม้วนเป็น. Let S T = Σ ทีฉัน= 1 Xฉัน
ให้เป็นดัชนีที่เล็กที่สุดที่S τ ≥ M
เหมือนกับ
สมการที่คล้ายกับอันแรกที่กล่าวมานั้น (อย่างน้อยก็ในหลักการ) สามารถถูกเรียกกลับมาได้จนกว่าคุณจะเริ่มต้นเงื่อนไขใด ๆ เพื่อรับความสัมพันธ์ทางพีชคณิตระหว่างเงื่อนไขเริ่มต้นและความน่าจะเป็นที่เราต้องการ (ซึ่งจะน่าเบื่อ หรือคุณสามารถสร้างสมการการส่งต่อที่สอดคล้องกันและเรียกใช้ไปข้างหน้าจากเงื่อนไขเริ่มต้นซึ่งเป็นเรื่องง่ายที่จะทำตัวเลข (และเป็นวิธีที่ฉันตรวจสอบคำตอบของฉัน) อย่างไรก็ตามเราสามารถหลีกเลี่ยงได้ทั้งหมด
ความน่าจะเป็นของคะแนนนั้นใช้ค่าเฉลี่ยความน่าจะเป็นก่อนหน้า สิ่งเหล่านี้ (ทางเรขาคณิตอย่างรวดเร็ว) จะลดความน่าจะเป็นที่จะเกิดขึ้นจากการแจกแจงเริ่มต้น (ความน่าจะเป็นทั้งหมด ณ จุดศูนย์ในกรณีที่เกิดปัญหาของเรา)
สำหรับการประมาณ (แม่นยำมาก) เราสามารถพูดได้ว่าถึงM - 1น่าจะเป็นไปได้เกือบเท่ากันในเวลาτ - 1 (ใกล้เคียงจริง ๆ ) และจากข้างบนเราสามารถเขียนลงได้ว่าความน่าจะเป็น ใกล้เคียงกับการมีอัตราส่วนอย่างง่ายและเนื่องจากมันจะต้องเป็นมาตรฐานเราจึงสามารถเขียนความน่าจะเป็นลงไปได้
ซึ่งก็คือเราจะเห็นได้ว่าหากความน่าจะเป็นของการเริ่มต้นจากถึงM - 1มีค่าเท่ากันมี 6 วิธีที่เป็นไปได้ที่เท่าเทียมกันในการเข้าสู่M , 5 ของการเข้าสู่M + 1และอื่น ๆ 1 วิธีการเดินทางไปยังM + 5
นั่นคือความน่าจะเป็นที่อยู่ในอัตราส่วน 6: 5: 4: 3: 2: 1 และรวมเป็น 1 ดังนั้นมันจึงเป็นเรื่องเล็กน้อยที่จะเขียนลงไป
การคำนวณมันอย่างแม่นยำ (ขึ้นอยู่กับข้อผิดพลาดรอบตัวเลขสะสม) โดยการเรียกใช้ความน่าจะเป็นแบบเรียกซ้ำไปข้างหน้าจากศูนย์ (ฉันทำใน R) ให้ความแตกต่างตามลำดับของ.Machine$double.eps
( บนเครื่องของฉัน) จากการประมาณข้างต้น การให้เหตุผลตามบรรทัดข้างต้นให้คำตอบที่ถูกต้องอย่างมีประสิทธิภาพเนื่องจากใกล้เคียงกับคำตอบที่คำนวณจากการเรียกซ้ำตามที่เราคาดหวังว่าคำตอบที่แน่นอนควรเป็น)2.22e-16
นี่คือรหัสของฉันสำหรับสิ่งนั้น (ส่วนใหญ่เป็นเพียงการเริ่มต้นตัวแปรงานทั้งหมดในหนึ่งบรรทัด) รหัสเริ่มต้นหลังจากม้วนแรก (เพื่อช่วยฉันวางในเซลล์ 0 ซึ่งเป็นความรำคาญเล็ก ๆ ที่จะจัดการกับใน R); ในแต่ละขั้นตอนจะใช้เซลล์ต่ำสุดซึ่งสามารถครอบครองและเคลื่อนที่ไปข้างหน้าโดย die roll (การกระจายความน่าจะเป็นของเซลล์นั้นในอีก 6 เซลล์ถัดไป):
p = array(data = 0, dim = 305)
d6 = rep(1/6,6)
i6 = 1:6
p[i6] = d6
for (i in 1:299) p[i+i6] = p[i+i6] + p[i]*d6
(เราสามารถใช้rollapply
(จากzoo
) ทำสิ่งนี้ได้อย่างมีประสิทธิภาพมากขึ้น - หรือฟังก์ชั่นอื่น ๆ อีกมากมาย - แต่มันจะง่ายกว่าในการแปลถ้าฉันบอกไว้ชัดเจน)
โปรดทราบว่าd6
เป็นฟังก์ชันความน่าจะเป็นแบบแยกส่วนมากกว่า 1 ถึง 6 ดังนั้นโค้ดภายในลูปในบรรทัดสุดท้ายจะสร้างค่าเฉลี่ยถ่วงน้ำหนักของค่าก่อนหน้า มันคือความสัมพันธ์นี้ที่ทำให้ความน่าจะเป็นเป็นไปอย่างราบรื่น (จนกระทั่งมีค่าน้อยสุดท้ายที่เราสนใจ)
นี่คือค่า 50 คี่แรก (25 ค่าแรกที่มีเครื่องหมายวงกลม) ที่แต่ละค่าบนแกน y แสดงถึงความน่าจะเป็นที่สะสมในเซลล์ hindmost ก่อนที่เราจะกลิ้งไปข้างหน้าใน 6 เซลล์ถัดไป
เมื่อคุณเห็นว่ามันราบรื่น (ต่อ , ส่วนกลับของค่าเฉลี่ยของจำนวนขั้นตอนที่แต่ละม้วนตายจะพาคุณ) ค่อนข้างเร็วและคงที่
และเมื่อเรากดความน่าจะเป็นเหล่านั้นก็จะหายไป (เพราะเราไม่ได้ใส่ความน่าจะเป็นสำหรับค่าที่Mและไปข้างหน้าในทางกลับกัน)
ดังนั้นความคิดที่ว่าค่าที่ถึงM - 6น่าจะเท่ากันเพราะความผันผวนจากสภาพเริ่มแรกจะราบรื่นขึ้นจะเห็นได้ชัดว่าเป็นกรณี
เนื่องจากเหตุผลไม่ได้ขึ้นอยู่กับอะไร แต่มีขนาดใหญ่พอที่เงื่อนไขเริ่มต้นจะถูกล้างออกเพื่อให้M - 1ถึงM - 6มีความเป็นไปได้เกือบเท่ากันในเวลาτ - 1การกระจายจะเหมือนกันสำหรับขนาดใหญ่ใด ๆMตามที่ Henry แนะนำไว้ในความคิดเห็น
ในการหวนกลับคำใบ้ของเฮนรี่ (ซึ่งอยู่ในคำถามของคุณด้วย) ที่จะทำงานกับผลรวมลบ M จะช่วยได้เล็กน้อย คุณสามารถดำเนินการต่อโดยให้และเขียนสมการที่คล้ายกันที่เกี่ยวข้องกับR 0ไปยังค่าก่อนหน้าและอื่น ๆ
จากการแจกแจงความน่าจะเป็นค่าเฉลี่ยและความแปรปรวนของความน่าจะเป็นนั้นง่าย
แก้ไข: ฉันคิดว่าฉันควรให้ค่าเฉลี่ยและส่วนเบี่ยงเบนมาตรฐานของตำแหน่งสุดท้ายลบ :
ค่าเฉลี่ยที่เกินเชิงซีโมติกเท่ากับและส่วนเบี่ยงเบนมาตรฐานคือ2 √
ค่าเริ่มต้นของลำดับนี้คือ
การคำนวณค่าเฉลี่ยและความแปรปรวนของการแจกแจงนี้ตรงไปตรงมาและง่ายดาย
R
M <- 300
n.iter <- 1e5
set.seed(17)
n <- ceiling((2/7) * (M + 3*sqrt(M)))
dice <- matrix(ceiling(6*runif(n*n.iter)), n, n.iter)
omega <- apply(dice, 2, cumsum)
omega <- omega[, apply(omega, 2, max) >= M+5]
omega[omega < M] <- NA
x <- apply(omega, 2, min, na.rm=TRUE)
count <- tabulate(x)[0:5+M]
(cbind(count, expected=round((2/7) * (6:1)/6 * length(x), 1)))
chisq.test(count, p=(2/7) * (6:1)/6)
[self-study]
แท็กและอ่านของวิกิพีเดีย จากนั้นบอกให้เราทราบว่าคุณเข้าใจอะไรจนถึงตอนนี้สิ่งที่คุณได้ลองไป เราจะให้คำแนะนำเพื่อช่วยให้คุณไม่ติดขัด