Очікувана кількість рулонів з кістки вимагає, щоб сума була більшою або дорівнює K?


9

Шестигранна штамповка згортається ітераційно. Яка очікувана кількість рулонів, необхідна для отримання суми, більшої або дорівнює K?

Перед редагуванням

P(Sum>=1 in exactly 1 roll)=1
P(Sum>=2 in exactly 1 roll)=5/6
P(Sum>=2 in exactly 2 rolls)=1/6
P(Sum>=3 in exactly 1 roll)=5/6
P(Sum>=3 in exactly 2 rolls)=2/6
P(Sum>=3 in exactly 3 rolls)=1/36
P(Sum>=4 in exactly 1 roll)=3/6
P(Sum>=4 in exactly 2 rolls)=3/6
P(Sum>=4 in exactly 3 rolls)=2/36
P(Sum>=4 in exactly 4 rolls)=1/216

Після редагування

P(Sum>=1 in atleast 1 roll)=1
P(Sum>=2 in atleast 1 roll)=5/6
P(Sum>=2 in atleast 2 rolls)=1
P(Sum>=3 in atleast 1 roll)=4/6
P(Sum>=3 in atleast 2 rolls)=35/36
P(Sum>=3 in atleast 3 rolls)=1
P(Sum>=4 in atleast 1 roll)=3/6
P(Sum>=4 in atleast 2 rolls)=33/36
P(Sum>=4 in atleast 3 rolls)=212/216
P(Sum>=4 in atleast 4 rolls)=1

Я не впевнений, що це в першу чергу правильно, але я думаю, що ця ймовірність пов'язана з очікуваною кількістю рулонів?

Але я не знаю, як далі діяти. Я рухаюся в правильному напрямку?


Як ви отримали ? П(S2 в 2 рулони)
Glen_b -Встановіть Моніку

@Glen_b У першому рулоні ви повинні отримати число менше 2, тож вірогідність отримати 1 - 1/6, а другий рулон може бути будь-яким числом. якщо ви отримаєте число більше або дорівнює 2 в першому рулоні, то ви не будете йти на другий рулон.
Звичайний підозрюваний

1
А, я бачу, що відбувається. Ви не описуєте це як "P (S \ geq 2 у 2 рулонах)"; це вираження означає, що кількість рулонів є фіксованим. Те, що ви хочете, - або "P (потрібно отримати рівно 2 рулониS2) "або" P (принаймні 2 рулону потрібно отримати S2) ".
Glen_b -Встановіть Моніку

@Glen_b Так, це плутанина. P (точно 2 рулону потрібно, щоб отримати S> 2) я здогадуюсь. Все, що я в кінцевому підсумку хочу обчислити, чи очікувана кількість рулонів, щоб досягти суми, більшої за K?
Звичайний підозрюваний

@Glen_b я повинен використовувати принаймні або саме для цієї мети? І як обчислити очікувану кількість рулонів на більшу суму, як 10000?
Звичайний підозрюваний

Відповіді:


2

Це поки що лише деякі ідеї іншого, більш точного підходу, заснованого на тому ж спостереженні, що і моя перша відповідь. З часом я продовжу це ...

По-перше, якесь позначення. ДозволяєKбути деяким заданим, додатним (великим) цілим числом. Ми хочемо розподілуN, що є мінімальною кількістю кидків звичайної кістки, щоб отримати хоча б суму K. Отже, спочатку визначимосьXi як результат кидання кісток i, і X(n)=X1++Xн. Якщо ми можемо знайти розподілХ(н) для усіх н то ми можемо знайти розподіл N з допомогою

П(Nн)=П(Х1++ХнК),
і ми зробили.

Тепер можливі значення для Х1++Хн є н,н+1,н+2,,6н, і для к в цьому діапазоні, щоб знайти ймовірність П(Х1++Хн=к), нам потрібно знайти загальну кількість способів писати к як сума точно н цілі числа, усі в діапазоні 1,2,,6. Але це називається обмеженим цілим складом, проблема, добре вивчена в комбінаториці. Деякі пов'язані питання з математики SE знайдете на веб-сайті https://math.stackexchange.com/search?q=integer+compositions

Таким чином, шукаючи та вивчаючи цю літературу з комбінаторики, ми можемо отримати тихі точні результати. Я буду продовжувати це, але пізніше ...


2

Існує проста закрита формула з точки зору коренів многочлена 6-го ступеня.

Насправді трохи легше вважати загальну справедливу загибель d2 обличчя, позначені цифрами 1,2,,d.

Дозволяє ek бути очікуваною кількістю рулонів, необхідних для вирівнювання або перевищення k. Для k0, ek=0. Інакше очікування на один більше, ніж очікування кількості рулонів, щоб досягти безпосередньо попереднього значення, яке було б серед kd,kd+1,,k1, звідки

(1)ек=1+1г(ек-г+ек-г+1++ек-1).

Це лінійне відношення рецидиву має рішення у вигляді

(2)ек=2кг+1+i=1гаiλiк

де λi є г складні корені многочлена

(3)Td1d(Td1+Td2++T+1).

Константи ai виявляються шляхом застосування розчину (2) до значень k=(d1),(d2),,1,0 де ek=0у кожному випадку. Це дає набірг лінійні рівняння в гконстанти і це унікальне рішення. Про те, що рішення працює, можна довести, перевіривши повторність(1) використовуючи той факт, що кожен корінь задовольняє (3):

1+1гj=1гек-j=1+1гj=1г(2(к-j)г+1+i=1гаiλiк-j)=2кг+1+i=1гаiλiк-г[1г(1+λi++λiг-1)]=2кг+1+i=1гаiλiк-гλiг=2кг+1+i=1гаiλiк=ек.

Це рішення закритої форми дає нам хороші способи наблизити відповідь, а також точно оцінити її. (Для малих до скромних значеньк, пряме застосування рецидиву - ефективний обчислювальний прийом.) Наприклад, с г=6 ми можемо легко обчислити

е1000000=285714.761905

Для наближення буде унікальний найбільший корінь λ+=1 тож зрештою (для досить великих к) термін λ+к буде домінувати над г терміни в (2).Похибка зменшиться експоненціально відповідно до другої найменшої норми коренів. Продовжуючи приклад ск=6, коефіцієнт λ+ є а+=0,4761905 а наступна-найменша норма - це 0.7302500. (До речі, інше аi мають тенденцію бути дуже близькими 1 за розміром.) Таким чином, ми можемо наблизити попереднє значення як

е10000002×1066+1+0,4761905=285714.761905

з помилкою на порядок 0.730250010610-314368.


Щоб продемонструвати, наскільки практичним є це рішення, ось Rкод, який повертає функцію для оцінкиек для будь-якого к (в межах подвійних точних обчислень з плаваючою комою) і не надто великі г (колись воно заграє г100):

die <- function(d, mult=1, cnst=1, start=rep(0,d)) {
  # Create the companion matrix (its eigenvalues are the lambdas).
  X <- matrix(c(0,1,rep(0,d-1)),d,d+1)
  X[, d] <- mult/d
  lambda <- eigen(X[, 1:d], symmetric=FALSE, only.values=TRUE)$values

  # Find the coefficients that agree with the starting values.
  u <- 2*cnst/(d+1)
  a <- solve(t(outer(lambda, 1:d, `^`)), start - u*((1-d):0))

  # This function assumes the starting values are all real numbers.
  f <- Vectorize(function(i) Re(sum(a * lambda ^ (i+d))) + u*i)

  list(f=f, lambda=lambda, a=a, multiplier=mult, offset=cnst)
}

Як приклад його використання, тут розраховується очікування на к=1,2,,16:

round(die(6)$f(1:10), 3)

1.000 1.167 1.361 1.588 1.853 2.161 2.522 2.775 3.043 3.324 3.613 3.906 4.197 4.476 4.760 5.046

Об'єкт, який він повертає, включає корені λi та їх множники аiдля подальшого аналізу. Перший компонент масиву множників - корисний коефіцієнта+.

(Якщо вам цікаво, для чого призначені інші параметри die, виконайте виконання die(2, 2, 0, c(1,0))$f(1:10)та подивіться, чи визнаєте ви вихід ;-). Це узагальнення сприяло розробці та тестуванню функції.)


+1. Функція dieвидає помилку для мене object 'phi' not found.
COOLSerdash

1
@COOL Дякуємо за перевірку. Винуватцем зміни в останній хвилині зміни назви змінної (з phiна a), щоб відповідати тексту. Я це зафіксував (і перевірив).
whuber

1

взагалі немає можливості отримати точну очікувану кількість рулонів, але для K.

Нехай N - подія очікуваного кочення, щоб отримати суму => K.

для K = 1, E (N) = 1

для K = 2, Е(N)=(56+21)/(56+1)=1711

і так далі.

Буде важко отримати E (N) для великої K. Наприклад, для K = 20, що вам потрібно буде очікувати від (4 рулону, 20 рулонів)

Теорема центрального ліміту буде більш вигідною з певною часткою впевненості. як нам відомо, виникнення рівномірно розподілено для великих значень К.

К(Sум) fоллошс N(3.5N,35N12)
(Нормальний розподіл)

Тепер вам потрібно "N", щоб отримати суму принаймні K .... ми перетворюємо його в стандартний нормальний розподіл.

К-3.5N35N12=Zα
де α=1-cонfiгенcе% Ви можете отримати значення Z у "Стандартних нормальних таблицях" або, наприклад, звідсиZ0,01=2,31,Z0,001=2,98

Ви знаєте, K, Z (за будь-якої помилки) ........ тоді ви можете отримати N = E (N) на деякий% довіри, вирішивши рівняння.


2
Як ви обчислили ці ймовірності? Як ви дійшли до цього рівняння E (N)?
Звичайний підозрюваний

@UsualSuspect P (Сума> = 2 в 1 рулоні) = 5/6 (ви знаєте) P (Сума> = 2 в 2 рулоні) = 1 (тому що ви повинні отримати суму, принаймні, 2 з 2 прокатки) і для E (N ) ......... це просто очікуване значення
Hemant Rupani

Вибачте, я згадую. Його не менше, рівно 2 рулони. Я зрозумів рівняння E (N) зараз.
Звичайний підозрюваний

@UsualSuspect о, о! до речі, якщо вам потрібен E (N) для будь-якого конкретного K, то я можу це зробити :).
Хемант Рупані

мені потрібно для k = 20 і k = 10000. Краще, якщо ви мені поясніть, а не прямо даєте відповіді.
Звичайний підозрюваний

0

Я дам один метод, щоб знайти приблизне рішення. По-перше, нехайХi бути випадковою змінною, "результат кидка i з кубиками »і нехай N бути кількістю кидків, необхідних для досягнення хоча б суми к. Тоді ми маємо це

П(Nн)=П(Х1+Х2++Хнк)
щоб знайти розподіл N нам потрібно знайти згортки розподілів Хi для i=1,2,,н, для усіх н. Ці згортки можна знайти чисельно, але для великихнце може бути багато роботи, тому ми намагаємося натомість наблизити функцію кумулятивного розподілу для згортків, використовуючи методи сідлових точок. Для іншого прикладу методів точок сідла дивіться мою відповідь на Загальну суму випадкових змінних Гамма

Ми будемо використовувати наближення Луганніні-Райса для дискретного випадку і слід R Бутлера: "Наближення східних точок з додатками", стор. 18 (друга корекція безперервності). По-перше, нам потрібна функція, що генерує моментХi, який

М(Т)=ЕетХi=16(ет+е2т+е3т+е4т+е5т+е6т)
Тоді сукупна генеруюча функція для суми н незалежні кістки стають
Кн(т)=нлог(16i=16еiт)
і нам також потрібно перші кілька похідних К, але ми знайдемо тих, хто символічно використовує R. Код такий:

 DD <- function(expr, name, order = 1) {
        if(order < 1) stop("'order' must be >= 1")
        if(order == 1) D(expr, name)
        else DD(D(expr, name), name, order - 1)
     }

make_cumgenfun  <-  function() {
    fun0  <-  function(n, t) n*log(mean(exp((1:6)*t)))
    fun1  <-  function(n, t) {}
    fun2  <-  function(n, t) {}
    fun3  <-  function(n, t) {}
    d1  <-  DD(expression(n*log((1/6)*(exp(t)+exp(2*t)+exp(3*t)+exp(4*t)+exp(5*t)+exp(6*t)))),  "t", 1)
    d2  <-  DD(expression(n*log((1/6)*(exp(t)+exp(2*t)+exp(3*t)+exp(4*t)+exp(5*t)+exp(6*t)))),  "t", 2)
    d3  <-  DD(expression(n*log((1/6)*(exp(t)+exp(2*t)+exp(3*t)+exp(4*t)+exp(5*t)+exp(6*t)))),  "t", 3)
    body(fun1)  <-  d1
    body(fun2)  <-  d2
    body(fun3)  <-  d3
    return(list(fun0,  fun1,  fun2,  fun3))
}

Далі ми повинні розв’язати рівняння сідлових точок.

Це робиться за допомогою наступного коду:

funlist  <-  make_cumgenfun()

# To solve the saddlepoint equation for n,  k:
solve_speq  <-   function(n, k)  {# note that n+1 <= k <= 6n is needed
    Kd  <-  function(t) funlist[[2]](n, t)
    k  <-  k-0.5
    uniroot(function(s) Kd(s)-k,  lower=-100,  upper=1,  extendInt="upX")$root
}

Зауважте, що наведений вище код не дуже надійний для значень кдалеко в будь-якому хвості дистрибуції він не працюватиме. Тоді деякий код для фактичного обчислення функції ймовірності хвоста, приблизно, наближенням Луганіні-Райса, слідуючи Батлеру, стор. 18, (друга корекція безперервності):

Функція повернення ймовірності хвоста:

#

Ghelp  <-  function(n, k) {
    stilde  <-  solve_speq(n, k)
    K  <-  function(t) funlist[[1]](n, t)
    Kd <-  function(t) funlist[[2]](n, t)
    Kdd <- function(t) funlist[[3]](n, t)
    Kddd <- function(t) funlist[[4]](n, t)
    w2tilde  <-  sign(stilde)*sqrt(2*(stilde*(k-0.5)-K(stilde)))  
    u2tilde  <-  2*sinh(stilde/2)*sqrt(Kdd(stilde))
    mu  <-  Kd(0)
    result  <- if (abs(mu-(k-0.5)) <= 0.001) 0.5-Kddd(0)/(6*sqrt(2*pi)*Kdd(0)^(3/2))  else
    1-pnorm(w2tilde)-dnorm(w2tilde)*(1/w2tilde - 1/u2tilde)
    return(result)
}
G  <- function(n, k) {
      fun  <- function(k) Ghelp(n, k)
      Vectorize(fun)(k)
  }

Тоді спробуємо використати це для обчислення таблиці розподілу, виходячи з формули

П(Nн)=П(Х1+Х2++Хнк)=1-П(Х1++Хнк+1)=1-Г(н,к+1)
де Г - це функція для коду R, наведеного вище.

Тепер давайте відповімо на початкове запитання К=20. Тоді мінімальна кількість рулонів - 4, а максимальна кількість рулонів - 20. Ймовірність того, що потрібно 20 рулонів, дуже мала, і її можна обчислити саме з біноміальної формули, я залишаю це читачеві. (наближення вище не працюватимен=20).

Тож ймовірність того N19 апроксимується по

> 1-G(20, 21)
[1] 2.220446e-16

Ймовірність того N10 приблизний:

> 1-G(10, 21)
[1] 0.002880649

І так далі. Використовуючи все це, ви можете самі отримати приблизну оцінку. Це повинно бути набагато краще, ніж наближення, засновані на центральній граничній теоремі.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.