Re[5]: [теорвер] белые шарики
От: dilmah США  
Дата: 06.03.12 00:55
Оценка: +1
T>C = K1 A1 A2 + ... + KN A1 A1, Ki = вероятность выбора iго ящика
T>A1 — вытащить белый шарик, A2 — вытащить еще раз белый шарик (второй раз)
T>с учетом того что шариков белых стало на один меньше:
T>P(Ki A1 A2) = P(Ki) P(A1 A2|Ki) = 1/N * (i-1)*(i-2)/((N-1)(N-2))
T>Вопрос такой тогда — если вы правы и овтет 0,5 то в чем моя ошибка?

ты считаешь, что Ki -- вероятность выбора iго ящика это 1/N
Но нас просят посчитать вероятность вытаскивания двух белых шариков УЖЕ ПОСЛЕ того как один белый шарик уже известно, что вытащен.
Это апостериорная вероятность, и она может отличаться (и отличается) от априорной вероятности, которая была в начале.


Скажем, если идут муж и жена, то вероятность того, что муж негр -- это, скажем, 10%
Если же мы уже узнали, что жена негритянка, то вероятность того, что муж негр (или мыщьх) резко повышается.
Re[2]: [теорвер] белые шарики
От: tsaple  
Дата: 06.03.12 01:02
Оценка:
Здравствуйте, Буравчик, Вы писали:

Б>Здравствуйте, Кодт, Вы писали:


К>>Есть n ящиков, в каждом из которых лежат k белых и n-k чёрных шариков (k последовательно принимает значения 1..n).

К>>Случайным образом выбрав ящик, мы запустили туда руку и вынули шарик. Он оказался белым.
К>>Какова вероятность того, что если мы вынем оттуда ещё два шарика, они тоже окажутся белыми?

Б>Как не странно, но для любого N получается ответ 0.5


Б>Вот так решал:


Б>


Я не понял ваше решение — вы выбираете корзину k, при условии что вытащили оттуда изначально белый шар?
Это как понять вроде же должно быт наоборот — при усолвии что выбрали корзину k, вероятность того что вытащили оттуда шарик белый,

Сам расчет : считали P1 = k / (сумма по C(k)) Какой в этом смысл?
Если вы считали вероятность вытащить белый шарик при условии, что выбрали ящик с номером k, то вероятность будет 1/N * k/N
Поясните пожалуйста что вы считали я не понял...
В моем новом решении примерно такой же подход, но вероятность которая у вас P1 у меня вычислена как просто 1/N — вероятность выбрать ящик k. Так как задача изменилась
когда мы вытащили шарик оттуда — нам не важно какова вероятност того что мы выберем ящик и вынем оттуда первый шарик — а только тот факт что мы оттуда выберем еще два белых шарика,
задача получается следующей — какова вероятность того, что мы выберем два подряд белых шарика после того как выбрали наугад ящик где ящик под номером k содержит k-1 белых шариков при общем количестве шариков равным N-1.
Разве я не прав?
Re[3]: [теорвер] белые шарики
От: Буравчик Россия  
Дата: 06.03.12 06:30
Оценка:
Здравствуйте, tsaple, Вы писали:

T>Сам расчет : считали P1 = k / (сумма по C(k)) Какой в этом смысл?


P1(k) — вероятность того, что первый белый шар был вытащен из корзины k.
По хорошему, надо было написать P1 = C(k) / (сумма по C(k)).
Best regards, Буравчик
Re[4]: [теорвер] белые шарики
От: Буравчик Россия  
Дата: 11.03.12 08:07
Оценка:
Здравствуйте, Буравчик, Вы писали:

Б>Здравствуйте, tsaple, Вы писали:


T>>Сам расчет : считали P1 = k / (сумма по C(k)) Какой в этом смысл?


Б>P1(k) — вероятность того, что первый белый шар был вытащен из корзины k.

Б>По хорошему, надо было написать P1 = C(k) / (сумма по C(k)).

Поясню.

По теореме Байеса: P(Ak|B) = P(B|Ak) * P(Ak) / SUM P(B|Ak)*P(Ak)
событие Ak — выбор корзины k
событие B — вытаскивание белого шара (первого)

P(Ak) — вероятность выбора корзины (до эксперимента): 1/n
P(B|Ak) — вероятность вытащить белый шар, если выбрана корзина k: k/n

P(Ak|B) — вероятность выбора корзины k при условии что вытащен белый шар:
P(Ak|B) = k/n * 1/n / SUM (k/n * 1/n) = k * 1/n^2 / (1/n^2 * SUM(k)) = k / SUM(k)
Best regards, Буравчик
Re: [теорвер] белые шарики
От: vdimas Россия  
Дата: 22.04.12 00:16
Оценка:
Здравствуйте, Кодт, Вы писали:

На пальцах, если N стремится к бесконечности, то вероятность достать 2 подряд шара одного цвета равна 1/4.

Если же N не стремится к бесконечности, то зайдем через матожидание.
Матожидание кол-ва белых шаров до начала событий соответственно:
1. n/2
2. (n/2)-1
3. (n/2)-2

Вероятности каждого события соответственно:
1. (n/2)/n
2. ((n/2)-1)/(n-1)
3. ((n/2)-2)/(n-2)

По условию задачи надо умножить вероятности (2) и (3):



Видно, что в пределе выражение стремится к 1/4, т.е. проходит проверку на здравый смысл.
Re[2]: [теорвер] белые шарики
От: vdimas Россия  
Дата: 22.04.12 01:15
Оценка:
Здравствуйте, vdimas, Вы писали:

Угу, сократил выражение, и понял, что оно не верно:


Потому что кол-во шаров не одинаковое, так же не учел специальное распределение по ящикам... Действительно, чуть сложнее выходит в аналитическом виде.

Вероятность, что мы выбрали правильный самый ящик в первый раз: (n-2)/n. Предлагаю подсчитать вероятность двух следующих событий в заведомо правильных ящиках и умножить на эту вероятность. Рассуждения такие же как предыдущем посту, только теперь:
— кол-во белых шаров всего w=(n^2+n)/2, черных b=n^2-w;
— кол-во шаров в неправильных ящиках w'=3, b'=2n-3;
— считаем вероятности как в предыдущем посту для w"=w-w', b"=b-b':

1. w"/(w"+b")
2. (w"-1)/(w"+b"-1)
3. (w"-2)/(w"+b"-2)

где w"+b"=n^2-2n

Формула многоэтажная, когда подставим выражения от n вместо w" и b", прямо сейчас сокращать лень...
Re[3]: [теорвер] белые шарики
От: dilmah США  
Дата: 22.04.12 02:28
Оценка:
V>Формула многоэтажная, когда подставим выражения от n вместо w" и b", прямо сейчас сокращать лень...

я читаю в плоском режиме, поэтому непонятно на какой именно вопрос ты отвечаешь, но на вопрос топикстартера в первых же постах правильно ответили -- 0.5, без многоэтажных формул
Re[4]: [теорвер] белые шарики
От: vdimas Россия  
Дата: 22.04.12 15:58
Оценка:
Здравствуйте, dilmah, Вы писали:

D>но на вопрос топикстартера в первых же постах правильно ответили -- 0.5, без многоэтажных формул


Во-первых, там тоже было многоэтажные, просто Mathcad сократил. Во-вторых, там решение с вольными допущениями.

И разве тебя не смущает ваши 0.5? Предположим, что у нас кол-во ящиков N+1, т.е. имеем одинаковое кол-во белых и черных шаров. В этом случае мы имеем дело с идеальным равномерным распределением 0,5 для шаров любого цвета, где вероятность вытащить любую заведомую комбинацию из 3-х шаров = 1/8, а любую заведомую комбинацию из 2-х шаров = 1/4. Но, по условию задачи тот факт, что мы убрали N+1 ящик, где были только черные, не влияет на результат. Итого, вытащить остальные 2 белых шара в системе из N ящиков после первого белого будет в точности равно вероятности вытащить их же после белого в системе из N+1 ящиков, т.е. 1/4.

В том направлении, куда пошел Буравчик, надо было взять все комбинации вытаскивания 3-х шаров подряд, из них взять только случаи, где первый шарик белый и затем найти отношение кол-ва нужных комбинаций к общему из этого подмножества с первым белым шаром.

На всякий случай написал программу, получил 0.25 при любом N:
#include <stdio.h>
#include <xutility>

const int N = 10;  

struct Variants { int var000, var0XX; };

// k - кол-во белых шаров в ящике
inline Variants iterate(int k) {
  Variants vars = {0};

  // итерация заведомо по первому белому шару
  for(int i1 = 0; i1 < std::min(k, N-2); i1++) {   
    for(int i2 = i1 + 1; i2 < (N-1); i2++) {
      for(int i3 = i2 + 1; i3 < N; i3++) {
        vars.var0XX++;
        if(i2 < k && i3 < k) vars.var000++;
      }
    }
  }

  return vars;
} 

int main(int argc, char* argv[])
{
  Variants vars = {0};

  for(int k = 1; k <= N; k++) {
    Variants tmp = iterate(k);
    vars.var000 += tmp.var000;
    vars.var0XX += tmp.var0XX;
  }

  printf("%f", double(vars.var000)/(vars.var000 + vars.var0XX));
}
Re[5]: [теорвер] белые шарики
От: vdimas Россия  
Дата: 22.04.12 16:12
Оценка:
Здравствуйте, vdimas, Вы писали:

V>На всякий случай написал программу, получил 0.25 при любом N:

V>
V>#include <stdio.h>
V>#include <xutility>

V>const int N = 10;  

V>struct Variants { int var000, var0XX; };

V>// k - кол-во белых шаров в ящике
V>inline Variants iterate(int k) {
V>  Variants vars = {0};

V>  // итерация заведомо по первому белому шару
V>  for(int i1 = 0; i1 < std::min(k, N-2); i1++) {   
V>    for(int i2 = i1 + 1; i2 < (N-1); i2++) {
V>      for(int i3 = i2 + 1; i3 < N; i3++) {
V>        vars.var0XX++;
V>        if(i2 < k && i3 < k) vars.var000++;
V>      }
V>    }
V>  }

V>  return vars;
V>} 

V>int main(int argc, char* argv[])
V>{
V>  Variants vars = {0};

V>  for(int k = 1; k <= N; k++) {
V>    Variants tmp = iterate(k);
V>    vars.var000 += tmp.var000;
V>    vars.var0XX += tmp.var0XX;
V>  }

V>  printf("%f", double(vars.var000)/(vars.var000 + vars.var0XX));
V>}
V>


Ошибка в последнем выражении. Тоже получается 1/3... чудеса...
printf("%f", double(vars.var000)/vars.var0XX);
Re[6]: [теорвер] белые шарики
От: Буравчик Россия  
Дата: 22.04.12 18:32
Оценка:
Здравствуйте, vdimas, Вы писали:

V>>На всякий случай написал программу, получил 0.25 при любом N:

V>Ошибка в последнем выражении. Тоже получается 1/3... чудеса...

Мой вариант. Всегда получается ~ 0.5

# -*- coding: utf-8 -*-
import random

# шар: БЕЛЫЙ и ЧЕРНЫЙ
class Ball:
    (WHITE, BLACK) = (0,1)

# корзина с шарами
class Basket:
    def __init__(self, total, whites):
        # Создает корзину, в которой всего *total* шаров, из которых *whites* белых
        self.total = total
        self.whites = whites
        
    def extractBall(self):
        # Достает из корзины шар и возвращает его цвет. При этом шар из корзины изымается
        ball_index = random.randint(1, self.total) 
        if ball_index <= self.whites:
            self.total -= 1
            self.whites -= 1
            return Ball.WHITE
        else:
            self.total -= 1
            return Ball.BLACK 


            
# Есть n ящиков, 
# в каждом из которых лежат k белых и n-k чёрных шариков 
# (k последовательно принимает значения 1..n).

n = 20                  # количество корзин

first_white = 0         # количество случаев, когда первым выпал белый шар
three_white = 0         # количество случаев, когда вытащили подряд три белых шара

for test in xrange(1000*1000):
    # случайно выбираем корзину
    k = random.randint(1,n)
    busket = Basket(n, k)
    
    # вытаскиваем первый белый шар
    if busket.extractBall() != Ball.WHITE:
        continue
    first_white += 1
    
    # вытаскиваем еще два белых шара
    if busket.extractBall() != Ball.WHITE:
        continue
    if busket.extractBall() != Ball.WHITE:
        continue
    three_white += 1


    
print three_white * 1.0 / first_white
... << RSDN@Home (RF) 1.2.0 alpha 5 rev. 17>>
Best regards, Буравчик
Re[7]: [теорвер] белые шарики
От: vdimas Россия  
Дата: 22.04.12 21:18
Оценка:
Здравствуйте, Буравчик, Вы писали:

Б>Мой вариант. Всегда получается ~ 0.5


Это у тебя уже эксперимент. А я имел ввиду подсчитать кол-во варианта 0XX и 000 через полный перебор всевозможных исходов.
Re: [теорвер] белые шарики
От: Caracrist https://1pwd.org/
Дата: 22.04.12 22:01
Оценка:
Здравствуйте, Кодт,

ответ 1/3

общая формула вероятности:
sigma( i=3 to n => (i-1)(i-2)/{n(n-1)(n-2)} )

для n=3 вероятность = 1/3
допустим для n вероятность = 1/3, и докажем для n+1
sigma( i=3 to n+1 => (i-1)(i-2)/{(n+1)n(n-1)} )

выносим последнее слогаемое
sigma( i=3 to n => (i-1)(i-2)/{(n+1)n(n-1)} ) + (n)(n-1)/{(n+1)n(n-1)}

умножаем на (n-2)
sigma( i=3 to n => (i-1)(i-2)(n-2)/{(n+1)n(n-1)(n-2)} ) + (n)(n-1)/{(n+1)n(n-1)}

выносим из сигмы
sigma( i=3 to n => (i-1)(i-2)/{n(n-1)(n-2)} ) * {(n-2)/(n+1)} + (n)(n-1)/{(n+1)n(n-1)}

заменяем sigma( i=3 to n => (i-1)(i-2)/{n(n-1)(n-2)} ) = 1/3
(n-2)/{3(n+1)} + (n)(n-1)/{(n+1)n(n-1)}

сокращаем
(n-2)/{3(n+1)} + 1/(n+1)

складываем
((n-2) + 3) / {3(n+1)}

сокращаем
(n+1)/{3(n+1)} = 1/3


~~~~~
~lol~~
~~~ Single Password Solution
Re[8]: [теорвер] белые шарики
От: dilmah США  
Дата: 22.04.12 23:14
Оценка:
V>Это у тебя уже эксперимент. А я имел ввиду подсчитать кол-во варианта 0XX и 000 через полный перебор всевозможных исходов.

ты как-то неправильно считаешь исходы:

#!/bin/sh

generate_all()
{
  n=$1
  for k in $(seq 1 $n); do
    for a in $(seq 1 $k); do
      for b in $(seq 1 $n); do
        for c in $(seq 1 $n); do
          echo $k $a $b $c
        done
      done
    done
  done
}

filter_out_invalid()
{
  awk '$2 != $3 && $2 != $4 && $3 != $4'
}

count_outcomes()
{
  awk -vx=0 -vy=0 '{ if ($3 <= $1 && $4 <= $1) ++x; else ++y } END { printf "all
 whites\t" x "\nfirst white but not all whites\t" y "\n" }'
}



$ generate_all 9 | filter_out_invalid | count_outcomes
all whites      1260
first white but not all whites  1260
Re: [теорвер] белые шарики
От: MasterZiv СССР  
Дата: 23.04.12 08:42
Оценка:
On 02/19/2012 08:45 PM, Кодт wrote:

> Какова вероятность того, что если мы вынем оттуда ещё два шарика, они тоже

> окажутся белыми?

Очевидно, 50%. Успокойся уже, иди работай.
Posted via RSDN NNTP Server 2.1 beta
Re[2]: [теорвер] белые шарики
От: dilmah США  
Дата: 23.04.12 09:58
Оценка:
MZ>Очевидно, 50%. Успокойся уже, иди работай.

ну, если 2 множества (эл.исходов), которые выглядят так соблазнительно просто, всегда содержат одинаковое кол-во элементов, то возникает соблазн найти какую-нибудь естественную биекцию между ними.
Re[2]: Формальное решение 1/3
От: Caracrist https://1pwd.org/
Дата: 23.04.12 13:28
Оценка:
Скажите если нужно объяснить это
C>общая формула вероятности:
C>
C>sigma( i=3 to n => (i-1)(i-2)/{n(n-1)(n-2)} )
C>
~~~~~
~lol~~
~~~ Single Password Solution
Re: 1/3
От: vladimir_i СССР  
Дата: 24.04.12 19:16
Оценка:
Здравствуйте, Кодт, Вы писали:

К>Вычитал у К.Кнопа в жж задачку.

К>...


Для начала, следует сразу вынуть из всех ящиков по 1 белому шару. Это ключевой шаг.

Получаем количество белых шаров(вероятность достать два) по ящикам в следующих случаях:

n=3
0(0) 1(0) 2(1) => p=1/3

n=4
0(0) 1(0) 2(1/3) 3(1) => p=(1+1/3)/4 = 1/3

n=5
0(0) 1(0) 2(2/4*1/3) 3(3/4*2/3) 4(1)=> p=(1+1/6+1/2)/5 = 1/3

...
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.