Как ошибся Белл (если статья привела правильный пример) +8

- такой же как Forbes, только лучше.

Не так давно, на этой неделе, я наткнулся на пост трехлетней давности. Вот он. Если вы будете его внимательно читать, то наткнетесь на то, что возмутит вас до глубины души. Если, конечно, вы понимаете что такое теория вероятностей. Речь об этом отрывке:

«55.55% — вероятность того, что ящики зажгутся одним и тем же цветом, когда мы выбираем две двери наугад, в соответствии с теорией скрытых параметров».

Все мое знакомство с теорвером буквально заорало об ошибке. Но есть нюанс… Я тоже могу ошибаться. Так давайте проверим!

Как рассуждает автор: мы берем одну, любую комбинацию, и смотрим какова вероятность совпадения.

Как рассуждаю я: я просто складываю вероятности получить совпадение нулей( R ) и 1(G). И у меня получается как раз 50%.

Приводить долгие рассуждения я не буду, приведу короткое: Если вы кинули монетку, то ваш первый бросок, а так же второй и любой другой, никак не могут повлиять на следующий. Любой следующий результат броска имеет вероятность выпадения 50/50. И, как следствие, результат совпадения будет 50 на 50.

Я не являюсь ни профессиональным математиком, ни, тем более, профессиональным физиком. Я просто программист. Следовательно, я могу ошибаться. И потому решил проверить результат своих рассуждений.

#define TESTMAX 1000000

struct ThreeWindowBox {
	bool m_Window[3];
};

float percent(int in) {
	return 100.0f *(((float)in) / (float)(TESTMAX));
}

int main(int argc, char** argv)
{
	//для тестирования Rand.
	int alls[2];
	alls[0] = 0;
	alls[1] = 0;

	int compare = 0;

	ThreeWindowBox* allBoxes = new ThreeWindowBox[TESTMAX];

	//заполняем позиции.
	for (int i = 0; i < TESTMAX; i++) {
		for (int window = 0; window < 3; window++) {
			int tmp = rand() % 2;
			alls[tmp]++;
			allBoxes[i].m_Window[window] = tmp;
		}
	}

	//А теперь ловим совпадения
	for (int i = 0; i < TESTMAX; i++) {
		int wind1 = rand() % 3;
		int wind2 = rand() % 3;
		//окна не должны совпадать!
		while(wind1 == wind2)
			 wind2 = rand() % 3;

		if (allBoxes[i].m_Window[wind1] == allBoxes[i].m_Window[wind2])
			compare++;
	}

	float perCompare = percent(compare);
	float perZero = percent(alls[0]) / 3;
	float perOne = percent(alls[1]) / 3;

	std::cout << perCompare << " " << perZero << " " << perOne;
}

На всякий пожарный, я решил проверить и функцию rand, чтобы гарантировать отсутствие глобального превосходства какого-либо значения над другим. И результат ровно тот, какой и следовало ожидать: 50.0251 49.9968 50.0032

Что это означает? Это означает, что либо автор статьи выбрал неправильную аналогию, либо ошибся Белл, либо наличие скрытого параметра никак нельзя обнаружить путем измерений.

П.С. Если таки ошибся я, я с радостью выслушаю в чем именно моя ошибка.
П.П.С. Нашел оригинальную статью Белла
Если я правильно понял, он не рассматривает совпадающие оси, а просто вероятности совпадения в разных осях. И да, там та же самая ошибка.
Но… мне сильно не хватает знаний, заложенных в самой статье. Поэтому, если кто сумеет ее прочитать и ПОНЯТЬ, прошу объяснить доступным языком.

П3.с
Жопа подкралась оттуда, откуда я ее не ждал. В принципе, это было вполне ожидаемо :-)
Согласно этой статье, вероятности распределяются не равномерно. Т.е. я оказался прав для случая в 90(270)градусов. А углов-то до и больше! И вот он, подвох: при угле = 0 всегда выпадет R, а при 180 — всегда G.
И, как утверждает автор, Белл говорил, что, внимание, подвох:
существуют углы, при которых условие
N[A+,B+] ? N[B–,C–] + N[A+,C+]
не выполняется.

где N[A+,B+] — вероятность выпадения R в окнах A, B
N[A+,C+] — вероятность выпадения R в окнах A, C
N[B–,C–] — вероятность выпадения G в окнах B, C

При этом, углы для A,B,C — свои.

И вот как это опровергнуть/доказать с точки зрения скрытых параметров я пока не знаю, но впереди все выходные!
Кто хочет — присоединяйтесь :-)

Теги:



Комментарии (38):

  1. DarthKotik
    /#10225692 / +3

    В оригинальной статье ничего не сказано про то что «Окна не должны совпадать». Они просто выбираются случайно. Можно случайно выбрать совпадающие. А вы этот случай исключаете, уменьшая вероятность совпадения цвета.

    • Ckpyt
      /#10225696

      1. Если они открывают одну и ту же дверь на обоих коробках, лампочки горят всегда одним и тем же цветом.

      2. Если они открывают двери двух коробок случайно, то один и тот же цвет появляется ровно в половине случаев.

      Т.е. это не совпадающие дверцы.

      • DarthKotik
        /#10225708 / +2

        «Подводя итог. В трети случаев коробки имеют одинаковые цвета, потому что мы выбрали одинаковые двери. Две трети времени мы выбираем разные двери, и в одной трети этих случаев мы получим один и тот же цвет».

        Цитата из оригинальной статьи, которая говорит нам о том, что дверцы могут совпадать

        • Ckpyt
          /#10225886

          Нет, по Беллу двери не могут совпадать. Он прямо рассматривает случаи разных осей и не смотрит на совпадающие.
          https://cds.cern.ch/record/111654/files/vol1p195-200_001.pdf

      • DarthKotik
        /#10225764 / +1

        matches = 0
        attempts = 0 
        for x in range(10000000):
            detect = [random.choice([True, False]) for _ in range(3)]
            if not any(detect) or all(detect):
                continue
            attempts += 1
            if random.choice(detect) == random.choice(detect):
                matches += 1
        print(attempts, matches, matches/attempts)
        

        Код симулирующий эксперимент из статьи.
        Полученный результат: 7501076 4167267 0.5555558962474184


        Проверка not any(detect) or all(detect) Исключает вариант, когда все 3 цвета выбраны одинаковыми, что не учитывалось в рассчёте из оригинальной статьи (без этой проверки результат равен 66%)

        • ibessonov
          /#10225782

          Вычисление вероятностей в статье, безусловно, верное.
          Вызывает сомнение тот факт, что эксперимент показывает 50% в том случае, когда ответ «классического физика» равен 66% (то есть при выборе возможно совпадающих дверей, абсолютно случайных). Я не нашёл ссылку на научную публикацию, в которой подтверждалась бы такая вероятность, а просто оригиналу статьи (https://www.wired.com/2014/01/bells-theorem) я верю с трудом.

        • Ckpyt
          /#10225784

          Во всех окнах может быть одно значение. (не забываем про физический смысл — проекция спина на три оси)
          И да, меня смутило именно 66%.

          П.с. нашел оригинальную статью Белла, ушел читать :-)
          https://cds.cern.ch/record/111654/files/vol1p195-200_001.pdf

          • ibessonov
            /#10225806 / +1

            Белл всё это дело придумал достаточно давно, и вряд-ли всё мировое сообщество физиков не заметило бы столь простую ошибку. Скорее всего в статье приведён кривой пример.
            Обязательно отпишитесь, когда дочитаете «оригинальную статью»!

            • Ckpyt
              /#10225830

              Ну… как сказать… статья написана прямо по Беллу, по разделу «take for example».
              И да, там настолько грубая ошибка.
              И да, там не рассматриваются совпадающие окна(оси).

        • alexxisr
          /#10225864

          Две трети времени мы выбираем разные двери, и в одной трети этих случаев мы получим один и тот же цвет


          пусть за первой дверью мы всегда видим R
          тогда за двумя другими могут быть комбинации RR, RG, GG, GR.
          так как вторую дверь для открывания мы выбираем случайно, то за ней мы увидим один из этих 8 цветов.
          кол-во R и G равно — следовательно вероятность что мы увидим R как за первой дверью равно 50%

          — где у меня ошибка?

          или имелось в виду, что из 2/3 когда мы выбираем разные двери цвета совпадают в половине случаев, что составляет 1/3 от всех открываний?

          • ibessonov
            /#10225868

            У вас ошибка в том, что изначально предполагается наличие 2-х дверей разных цветов, то есть вариант RR отпадает

            • alexxisr
              /#10225898

              ок
              но ведь если мы исключаем вариант RRR при открытии 2 случайных дверей, то они не будут составлять 2/3 всех случаев

              то есть 1/3 (открываем одинаковые двери) + 6/8*2/3*1/3=1/6 (разные двери нет троек цветов) +2/8*2/3=1/6(тройки одинаковых цветов) итого = 2/3 (вероятность увидеть одинаковые цвета открывая случайные двери)

              что логично — в каждой тройке есть как минимум пара одинаковых
              а в квантовых экспериментах получается 1/2?
              придется тоже почитать Белла на ночь

              • ibessonov
                /#10225912

                а в квантовых экспериментах получается 1/2?

                Задаюсь тем же вопросом :)

                • Livid
                  /#10233598

                  Меня тоже это смутило сначала, на первый взгляд кажется что нет. Ниже обрисовал выкладки (нижняя половина комментария). Действительно, при определенной, причем очень конкретной, конфигурации осей измерения (в одной плоскости, с углом 120? между осями) в квантовом случае получается 1/2. Но это не совсем очевидный факт, и оригинальная статья (которая трехлетняя) его увы никак не комментирует. Все усугубляется тем, что для любой другой (плоской) конфигурации осей получается больше 1/2.

              • Ckpyt
                /#10225926

                У вас ошибка в рассуждениях. У меня как раз не исключаются одинаковые варианты, исключаются одинаковые оси. И все равно результат 1/2

        • vesper-bot
          /#10225984

          Вообще, в статье, где стоит 55.55%, ошибка в определении условной вероятности. Там стоит 1/3+2/3*1/3, когда должно стоять 1/3+2/3*1/2, или 2/3==66.66%. А вот после того, как варианты RRR и GGG из рассмотрения выкинули, меняется условная вероятность совпадающего сигнала, и вот тогда правильный ответ все-таки 55.55%.

          • Ckpyt
            /#10226008

            Там определена не вероятность вообще, а только для данной конкретной комбинации.
            Дальше надо было сделать шаг вперед: определить вероятности совпадения 0 для всех комбинаций и сложить их с вероятностью совпадения 1 для всех комбинаций. И вот тогда-то мы и получаем те самые 50%, которые имеем в реальных экспериментах.

            Я не привел всю цепочку рассуждений и вычислений в своей статье — она получается длинная и муторная.

      • MiXei4
        /#10226644 / +1

        Ничего не понимаю :) В первом пункте написано, что они могут открыть одну и ту же («первую» например) дверь на обоих коробках:

        1. Если они открывают одну и ту же дверь на обоих коробках, лампочки горят всегда одним и тем же цветом.

        Как из этого следует ваше:
        Т.е. это не совпадающие дверцы.

        ?

        • Ckpyt
          /#10226658

          Это следует напрямую из неравенств Белла.
          P[a+b+] <= P[a+c+] + P[b-c-],
          или, переводя на язык той статьи:
          P[R1R2] <=P[R1R3] + P[G2G3]
          Т.е. вероятность совпадения результатов в первом и втором окне в одной позиции всегда будет меньше или равно вероятности совпадения результатов в первом и третьем окне в той же позиции плюс вероятность совпадения результатов во втором и третьем окне в противоположной позиции.
          Так же это следует и из рассматриваемых уравнений в самой статье.
          Если вы внимательно будете смотреть на логику происходящего, то увидите, что рассматриваются комбинации одного окна с двумя другими, а не тремя другими.
          Та логика, которую приводят в переведенной статье, является ошибочной, что я и указал.

          А вот с логикой Белла надо разобраться. Сижу, курю теорвер вкупе с квантовой механикой… завораживает, аж спать не хоцца :-)

  2. paulgray
    /#10225776

    все ушли читать статью пятилетней давности…

  3. Fortop
    /#10225832 / +1

    пост пятилетней давности. Вот он:
    geektimes.ru/post/225583

    8 июня 2014 в 16:54

    Как у вас там дела в 2019-м?

    • Ckpyt
      /#10225838

      Упсссс… у меня было открыто несколько статьей по квантовой механике и я перепутал вкладки… сорри :-)

      • Fortop
        /#10225854 / +1

        Да ну квантовая механика как раз в действии.

        Нессиметричное течение времени.

  4. Leoon
    /#10225930 / -2

    Теория вероятности говорит о вероятности. Но нет доказательства в реальности, что это будет 66% или 55,55% потому что невозможно провести такой эксперимент в полностью изолированной системе. И на практике, с человеческим везением можно получить совершенно разные результаты даже в бесконечно долгий промежуток времени. Напишите программу и открывайте двери руками, а не программой. И увидите результат. Они у всех будут разные. По этому и существует только Теория относительности.

    • Ckpyt
      /#10225934

      Именно поэтому я, беря миллион сравнений, получаю не 50% а целых 50.0251.
      Именно из-за того, что это вероятности :-)

      • Leoon
        /#10225944 / -1

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

        • Ckpyt
          /#10225954

          Я отследил и это. Я смотрел сколько всего выпало 0 и 1 и вывел процент выпадения. 49.9968 50.0032

          • Leoon
            /#10225962 / -1

            Это все правильно, но я говорил не об этом. Я говорил о том, что Белл, проведя эксперимент не ошибся, а получил такой результат в следствии его везения. Рассматривая и ваш эксперимент, каждый раз он был ошибкой, просто меньшей погрешности, чем у Белла.

            • Ckpyt
              /#10225976

              Белл не проводил экспериментов, он рассуждал логически. И как раз в его рассуждения, возможно, закралась ошибка. Эксперименты проводили потом… Много-много раз, разными способами и разными людьми. Можете почитать об этом в английской вики.
              https://en.wikipedia.org/wiki/Bell_test_experiments

              Так что, вероятность ошибки ВСЕХ экспериментов ничтожно мала.

    • ibessonov
      /#10225958 / +1

      По этому и существует только Теория относительности.

      Теория Относительности тут совсем непричём.
      Теория вероятности говорит о вероятности.

      И на практике, с человеческим везением можно получить совершенно разные результаты даже в бесконечно долгий промежуток времени.

      Настоятельно советую ознакомиться с законом больших чисел, ну или просто почитать основы мат статистики. Получиться то всё может, но вероятность этого настолько ничтожно мала, что её никто не рассматривает.

      • Leoon
        /#10225978 / -2

        Смотря ведь где не рассматривают. Смотря какая точность нужна. Если не учесть отклонение в 0,1 процент при старте ракеты, то можно ее лишится. Имеется виду, не процент направления, а скажем процент изгиба сопла.
        И так же даже 5% в отклонении в детали автомобиля Ваз не играет не какой роли, если ее смогли продать до того, как это выяснилось.

  5. Livid
    /#10232504

    «Пост трехлетней давности» на самом деле довольно опосредованно относится к оригинальной публикации Белла. Это некая «напальцевая иллюстрация», которая появилась уже сильно потом. В посте конечно косяк, но не там, где Вы его ищете.

    Вероятности для «классического» случая правильные, в рамках допущений. И да, «случайно выбранные» оси могут совпадать. А вот квантовомеханическая вероятность для описанных условий никак не получается 1/2. Напротив, не меньше 7/9, если для любой пары векторов a, b, c скалярное произведение неотрицательно (т.е. угол между любыми векторами не больше ?/2).
    Это если я правильно вспомнил квантмех. Поскольку меня ему учили лет 10 назад, и с тех пор я про него почти не вспоминал, возможно я где-то напорол. Выкладки приводить не буду, ибо лень бороться с формулами.

    P.S. Забыл уточнить. Считаем, вслед за Беллом, что векторы a,b,c лежат в одной плоскости. Иначе умеренно бессмысленно.

    • Livid
      /#10232638

      А, таки все же напорол, 1/2 получается, если углы между векторами 120?. И в силу симметрии предположение о равных вероятностях для «классического» расчета не кажется совсем уж взятым с потолка, хотя это и не принципиально.

  6. Livid
    /#10232820 / +1

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


    Есть источник запутанных частиц и два детектора, A и B, имеющих по три режима 1, 2, 3, соответствующих трем направлениям измерения:


    1. Вдоль некоторой оси z, ? = 0?
    2. Под углом 120? к оси z, ? = 120?
    3. Под углом 240? к оси z, ? = -120?

    Иными словами, оси измерения расположены в форме буквы Y. Подчеркиваю, оси находятся в одной плоскости. Для простоты считаем, что эта плоскость перпендикулярна направлению падения частицы


    Проводим серию измерений, причем в каждом измерении независимо выбираем режим каждого детектора с одинаковой вероятностью. Подчеркиваю, вариант, когда оси измерения на детекторах совпадают, выпадает с вероятностью 1/3*1/3*3 = 1/3.


    Вариант со скрытыми параметрами ("классический") по сути означает, что результат измерения спина каждой частицы вдоль каждой оси заведомо определен. Всего 8 вариантов для каждой частицы. В нотации 1 = спин "вверх" (вдоль оси измерения), 0 = спин "вниз" (против оси измерения).


    Кроме того, мы вполне уверены, и это экспериментально подтверждено, что измерение вдоль одной оси для запутанных частиц дает противонаправленные спины (иначе угловой момент вселенной не сохраняется).


    Тогда со скрытыми параметрами имеем следующие варианты (в заголовке %детектор%%режим%, т.е. А1 например — это детектор А, режим 1):


     A1 | A2 | A3 | B1 | B2 | B3
    ----|----|----|----|----|----
     0  | 0  | 0  | 1  | 1  | 1 
     0  | 0  | 1  | 1  | 1  | 0
     0  | 1  | 0  | 1  | 0  | 1 
     0  | 1  | 1  | 1  | 0  | 0
     1  | 0  | 0  | 0  | 1  | 1 
     1  | 0  | 1  | 0  | 1  | 0
     1  | 1  | 0  | 0  | 0  | 1 
     1  | 1  | 1  | 0  | 0  | 0

    Теперь, вероятность режима на каждом из детекторов 1/3. Посчитаем, какова вероятность того, что на одном детекторе будет 0, а на другом 1 для каждого из вариантов (для простоты можно просто посчитав комбинации):


     A1 | A2 | A3 | B1 | B2 | B3 | Вероятность
    ----|----|----|----|----|----|-------------
     0  | 0  | 0  | 1  | 1  | 1  | 1
     0  | 0  | 1  | 1  | 1  | 0  | 5/9
     0  | 1  | 0  | 1  | 0  | 1  | 5/9
     0  | 1  | 1  | 1  | 0  | 0  | 5/9
     1  | 0  | 0  | 0  | 1  | 1  | 5/9
     1  | 0  | 1  | 0  | 1  | 0  | 5/9
     1  | 1  | 0  | 0  | 0  | 1  | 5/9
     1  | 1  | 1  | 0  | 0  | 0  | 1

    Ясно, что независимо от того, каковы вероятности каждого из вариантов, вероятность ?? того, что на одном детекторе 1, а на другом 0, не может быть меньше 5/9. ?? ? 5/9.


    Теперь рассмотрим квантовомеханическую вероятность. Опуская строгий вывод, приведу напальцевое рассуждение.


    Вполне очевидно, что для коллинеарных осей (? = 0), вероятность получить разные результаты P(0) = 1 (поскольку спины противонаправлены при измерении вдоль одной оси).


    Для антиколлинеарных осей (?=180?), вероятность получить противоположные результаты P(180?) = 0 (поскольку спины противонаправлены при измерении вдоль одной оси, и противонаправленные оси всегда дают одинаковый результат).


    Так же известно, что для ортогональных осей (? = ±90?) спины независимы, то есть вероятность получить 0 или 1 на любом детекторе 1/2, и тогда вероятность что они не совпадут P(±90?) = 1/2.


    Общая формула P(?) = cos?(?/2). Это можно показать строго, рассмотрев два измерения на одной частице, просто применив квантово-механический оператор проекции, но там вылезают матрицы, бра- и кет-векторы, в общем расписывать муторно.


    Если режимы совпадают, оси совпадают, ?=0, вероятность получить противоположные результаты на детекторах P(0) = 1. Если же они не совпадают, то оси отличаются на ? = ±120?, P(±120?) = cos?(±120?/2) = cos?(±60?) = 1/4.


    Рассмотрим варианты (в заголовке — детектор, в строке — режим):


     A | B | Вероятность
    ---|---|-------------
     1 | 1 | 1
     1 | 2 | 1/4
     1 | 3 | 1/4
     2 | 1 | 1/4
     2 | 2 | 1
     2 | 3 | 1/4
     3 | 1 | 1/4
     3 | 2 | 1/4
     3 | 3 | 1

    Вероятность режима на одном детекторе 1/3, режимы независимы, вероятность конкретной комбинации режимов детекторов A и B 1/3*1/3=1/9, в результате вероятность получить разные результаты на детекторах, с учетом случайности режимов, ?? = (3 + 6/4)/9 = (3+3/2)/9 = (1 + 1/2)/3 = (3/2)/3 = 1/2.


    Получаем, в варианте со скрытыми параметрами ?? ? 5/9, а в квантово-механическом ?? = 1/2 < 5/9. ?? < ?? Это можно проверить экспериментально.


    У Белла углы не конкретизированы, поэтому там более общее рассуждение в ключе "можно выбрать такие углы, что будет значительная разница".


    В итоге: все нормально в том посте трехлетней давности, прямых ошибок нет. Но автор несколько увлекся аллегориями, и в результате только нагнал туману. У Белла тем более все нормально.

    • Ckpyt
      /#10232972

      Знаете, вы где-то ошиблись в первой части… Вот смотрите:

      #define TESTMAX 1000000
      
      struct ThreeWindowBox {
      	bool m_Window[6];
      };
      
      float percent(int in) {
      	return 100.0f *(((float)in) / (float)(TESTMAX));
      }
      
      int main(int argc, char** argv)
      {
      	//для тестирования Rand.
      	int alls[2];
      	alls[0] = 0;
      	alls[1] = 0;
      
      	int compare = 0;
      
      	ThreeWindowBox* allBoxes = new ThreeWindowBox[TESTMAX];
      
      	//заполняем позиции.
      	for (int i = 0; i < TESTMAX; i++) {
      		for (int window = 0; window < 6; window++) {
      			int tmp = rand() % 2;
      			alls[tmp]++;
      			allBoxes[i].m_Window[window] = tmp;
      		}
      	}
      
      	//А теперь ловим совпадения
      	for (int i = 0; i < TESTMAX; i++) {
      		int wind1 = rand() % 3;
      		int wind2 = rand() % 3 + 3;
      
      		if (allBoxes[i].m_Window[wind1] == !allBoxes[i].m_Window[wind2])
      			compare++;
      	}
      
      	float perCompare = percent(compare);
      	float perZero = percent(alls[0]) / 6;
      	float perOne = percent(alls[1]) / 6;
      
      	std::cout << perCompare << " " << perZero << " " << perOne;
      }
      


      выдает следующие результаты:
      49.9836 49.9976 50.0024

    • Ckpyt
      /#10232982

      Упс, сорри, есть небольшая ошибка

    • Ckpyt
      /#10232990

      Забыл, что генерируется не полностью случайная, а частично-случайная последовательность.
      Вот теперь все норм, и совпадает с вашими расчетами:

      #define TESTMAX 1000000
      
      struct ThreeWindowBox {
      	bool m_Window[6];
      };
      
      float percent(int in) {
      	return 100.0f *(((float)in) / (float)(TESTMAX));
      }
      
      int main(int argc, char** argv)
      {
      	//для тестирования Rand.
      	int alls[2];
      	alls[0] = 0;
      	alls[1] = 0;
      
      	int compare = 0;
      
      	ThreeWindowBox* allBoxes = new ThreeWindowBox[TESTMAX];
      
      	//заполняем позиции.
      	for (int i = 0; i < TESTMAX; i++) {
      		for (int window = 0; window < 3; window++) {
      			int tmp = rand() % 2;
      			alls[tmp]++;
      			allBoxes[i].m_Window[window] = tmp;
      			allBoxes[i].m_Window[window + 3] = !tmp;
      		}
      	}
      
      	//А теперь ловим совпадения
      	for (int i = 0; i < TESTMAX; i++) {
      		int wind1 = rand() % 3;
      		int wind2 = rand() % 3 + 3; //так как снимаем с другого детектора
      /*
      		//окна не должны совпадать!
      		while (wind1 == wind2)
      			wind2 = rand() % 3;*/
      
      		if (allBoxes[i].m_Window[wind1] == !allBoxes[i].m_Window[wind2])
      			compare++;
      	}
      
      	float perCompare = percent(compare);
      	float perZero = percent(alls[0]) / 6;
      	float perOne = percent(alls[1]) / 6;
      
      	std::cout << perCompare << " " << perZero << " " << perOne;
      }
      


      66.6364 24.9984 25.0016

      • Livid
        /#10233514 / +1

        Да, "внутреннее состояние" одной частицы должно полностью определять "внутреннее состояние" второй, то есть случайных параметров у пары запутанных частиц получается на самом деле 3, а не 6. Иначе беда с угловым моментом вселенной :)


        Честно говоря поленился подробно разбираться в Вашем коде (давно не трогал плюсы), но вот по идее более-менее эквивалентный код на питоне. Единственное, для простоты вместо того чтобы проверять неравенство бита и отрицания другого бита, я сравниваю, наоборот, равенство двух бит. Несложно показать, что это одно и то же (в булевой алгебре, ¬(A ? ¬B) ? A ? ¬(¬B) ? A ? B)


        import random
        
        ny = 0
        nn = 0
        nyprime = 0
        nnprime = 0
        
        for i in range(0,100000):
          a1 = random.choice([0,1])
          a2 = random.choice([0,1])
          a3 = random.choice([0,1])
        
          '''
          Внутреннее состояние одной частицы.
          У второй соответственно побитовое "не"
          '''
          s = [a1,a2,a3]
        
          '''
          Независимый выбор режимов детекторов
          '''
          v1 = random.choice(s)
          v2 = random.choice(s)
        
          '''
          Зависимый выбор, режимы не совпадают
          '''
          [v1prime, v2prime] = random.sample(s,2)
        
          '''
          v1 == v2 ? v1 != not v2
          '''
          if v1 == v2:
            ny += 1
          else:
            nn += 1
        
          if v1prime == v2prime:
            nyprime += 1
          else:
            nnprime += 1
        
        print('Независимые оси:', ny/(ny+nn),nn/(ny+nn))
        print('Несовпадающие оси:', nyprime/(nyprime+nnprime),nnprime/(nyprime+nnprime))

        Резульаты:


        Независимые оси: 0.66798 0.33202
        Несовпадающие оси: 0.50012 0.49988

        Немножко теоретически-вероятностных выкладок, если уж возникли сомнения (на правах гимнастики для мозга):


        Вероятности выше должны быть связяны отношением между независимыми осями P? и несовпадающими осями P? как
        P? = 1/3 + 2/3*P?
        (поскольку совпадающие оси очевидно выпадают в 1/3 случаев)


        А поскольку s у нас здесь выбирается с равномерным распределением (т.е. все варианты равновероятны), для P? получается 1/2 (ибо компоненты s независимы).


        Если же компоненты s зависимы (т.е. распределение s неравномерно), то P? может быть больше или меньше, но не менее 1/3. Показать довольно просто.


        Так как с точки зрения совпадения/различия двух разных бит, у s всего два варианта, xxx и xxt (t ? x), причем для первого из них вероятность совпадения P??? = 1, то достаточно прикинуть вероятность совпадения P??? для второго:


        P??? = 1/3*1/2 + 1/3*1/2 + 1/3*0 = 1/3 (? вероятность выпадения i-го бита * вероятность выпадения бита с тем же значением из двух оставшихся).


        В таком варианте P? = ? P??? + (1 – ?) P???, 0 ? ? ? 1, P? = ? (P??? – P???) + P??? => P??? ? P? ? P???. Тогда P? ? 1/3 и P? ? 5/9.


        Можно отметить, что вариант равномерного распределения s соответствует ? = 2/8 = 1/4.


        Собственно получить эти 5/9 в программе можно запретив состояния s=000 и s=111 (? = 0).