<jupyter_start><jupyter_text>prepared by <NAME> (QLatvia)                 This cell contains some macros. If there is a problem with displaying mathematical formulas, please run this cell to load these macros. $ \newcommand{\bra}[1]{\langle 1|} $$ \newcommand{\ket}[1]{|1\rangle} $$ \newcommand{\braket}[2]{\langle 1|2\rangle} $$ \newcommand{\dot}[2]{ 1 \cdot 2} $$ \newcommand{\biginner}[2]{\left\langle 1,2\right\rangle} $$ \newcommand{\mymatrix}[2]{\left( \begin{array}{1} 2\end{array} \right)} $$ \newcommand{\myvector}[1]{\mymatrix{c}{1}} $$ \newcommand{\myrvector}[1]{\mymatrix{r}{1}} $$ \newcommand{\mypar}[1]{\left( 1 \right)} $$ \newcommand{\mybigpar}[1]{ \Big( 1 \Big)} $$ \newcommand{\sqrttwo}{\frac{1}{\sqrt{2}}} $$ \newcommand{\dsqrttwo}{\dfrac{1}{\sqrt{2}}} $$ \newcommand{\onehalf}{\frac{1}{2}} $$ \newcommand{\donehalf}{\dfrac{1}{2}} $$ \newcommand{\hadamard}{ \mymatrix{rr}{ \sqrttwo & \sqrttwo \\ \sqrttwo & -\sqrttwo }} $$ \newcommand{\vzero}{\myvector{1\\0}} $$ \newcommand{\vone}{\myvector{0\\1}} $$ \newcommand{\vhadamardzero}{\myvector{ \sqrttwo \\  \sqrttwo } } $$ \newcommand{\vhadamardone}{ \myrvector{ \sqrttwo \\ -\sqrttwo } } $$ \newcommand{\myarray}[2]{ \begin{array}{1}2\end{array}} $$ \newcommand{\X}{ \mymatrix{cc}{0 & 1 \\ 1 & 0}  } $$ \newcommand{\Z}{ \mymatrix{rr}{1 & 0 \\ 0 & -1}  } $$ \newcommand{\Htwo}{ \mymatrix{rrrr}{ \frac{1}{2} & \frac{1}{2} & \frac{1}{2} & \frac{1}{2} \\ \frac{1}{2} & -\frac{1}{2} & \frac{1}{2} & -\frac{1}{2} \\ \frac{1}{2} & \frac{1}{2} & -\frac{1}{2} & -\frac{1}{2} \\ \frac{1}{2} & -\frac{1}{2} & -\frac{1}{2} & \frac{1}{2} } } $$ \newcommand{\CNOT}{ \mymatrix{cccc}{1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 0 & 1 \\ 0 & 0 & 1 & 0} } $$ \newcommand{\norm}[1]{ \left\lVert 1 \right\rVert } $  Подброс монеты: Вероятностный бит [Смотреть лекцию](https://youtu.be/uGKHEsVcSEs) Правильная монета (fair coin) Монета имеет две стороны: Орел (орг. Head) и Решка (орг. Tail).После подброса монеты мы получаем в качестве результата Орла или Решку. Мы можем представить эти два исхода с помощью одного бита:     0 предтавляет Орла      1 предтавляет Решку   Подброс правильной монеты Если монета правильная, то вероятности получения Орла и Решки одинаковы:$ p= \dfrac{1}{2} = 0.5 $.Подброс правильной монеты может быть предсавлен в виде оператора:     $ FairCoin(Head) = \frac{1}{2} Head + \frac{1}{2}Tail $      $ FairCoin(Tail) = \frac{1}{2} Head + \frac{1}{2}Tail $ $FairCoin = \begin{array}{c|cc} & \mathbf{Head} & \mathbf{Tail} \\ \hline \mathbf{Head} & \dfrac{1}{2} & \dfrac{1}{2} \\  \mathbf{Tail} & \dfrac{1}{2} & \dfrac{1}{2}  \end{array}$Или, используя 0 и 1:$FairCoin = \begin{array}{c|cc} & \mathbf{0} & \mathbf{1} \\ \hline \mathbf{0} & \dfrac{1}{2} & \dfrac{1}{2} \\  \mathbf{1} & \dfrac{1}{2} & \dfrac{1}{2}  \end{array}$  Task 1: Симуляция правильной монеты в PythonПодбросьте правильную монету 100 раз. Посчитайте количества выпадения Орла и Решки, далее проверьте соотношение количества Орла на количество Решки.Проделайте эксперимент 1000 раз.Проделайте эксперимент 10,000 раз.Проделайте эксперимент 100,000 раз.Насколько ваш результат близок к идеальному случаю (количества Орлов и Решек одинаковы)?<jupyter_code>from random import randrange
#
# you may use method 'randrange' for this task
# randrange(n) return a value from {0,1,...,n-1} randomly
#

#
# your solution is here
#<jupyter_output><empty_output><jupyter_text>click for our solution  Подброс предвзятой монеты (biased coin) Наша монета может быть предвзятой. Например, вероятность получения Орла больше, чем вероятность получения Решки.Пример:$BiasedCoin = \begin{array}{c|cc} & \mathbf{Head} & \mathbf{Tail} \\ \hline \mathbf{Head} & 0.6 & 0.6 \\  \mathbf{Tail} & 0.4 & 0.4  \end{array}$Или, используя 0 и 1 как состояния:$BiasedCoin = \begin{array}{c|cc} & \mathbf{0} & \mathbf{1} \\ \hline \mathbf{0} & 0.6 & 0.6\\  \mathbf{1} & 0.4 & 0.4 \end{array}$  Task 2: Симуляция предвзятой монеты в PythonПодбросьте следующую предвзятую монету 100 раз. Посчитайте количества выпадения Орла и Решки, далее проверьте соотношение количества Орла на количество Решки.$BiasedCoin = \begin{array}{c|cc} & \mathbf{Head} & \mathbf{Tail} \\ \hline \mathbf{Head} & 0.6 & 0.6 \\  \mathbf{Tail} & 0.4 & 0.4  \end{array}$Проделайте эксперимент 1000 раз.Проделайте эксперимент 10,000 раз.Проделайте эксперимент 100,000 раз.Насколько ваш результат близок к идеальному случаю $ \mypar{ \dfrac{ \mbox{ of heads} }{ \mbox{ of tails} } = \dfrac{0.6}{0.4} = 1.50000000 } $?<jupyter_code>#
# you may use method 'randrange' for this task
# randrange(n) return a value from {0,1,...,n-1} randomly
#

#
# your solution is here
#<jupyter_output><empty_output><jupyter_text>click for our solution  Программирование предвзятой монеты [extra] Мы используем простенький метод для создания предвзятой монеты.1) Определяем диапазон точности вероятностей, скажем, $ N $, как $ N = 11, 101, 1001, \mbox{ or }, 10^k+1 $ для некоторого $ k > 4 $.2) Определяем значение смещения (предвзятость), скажем, $ B $, как целое число между 0 и $ N $.Мы фиксируем $ N $ и $ B $.3) Выбираем произвольное число между 0 и $ N $:     если число меньше, чем $ B $, мы полагаем, что выпал "Орел"     если число больше или равно $ B $, полагаем, что выпала "Решка"     Таким образом, мы построили предвзятую монету, которая "выпадает" Орлом с вероятностью $ \frac{B}{N} $.Заметим, что мы определяем $ N = 10^k+1 $. В таком случае монета не может быть правильной, если $ B $ является целым. ($ \frac{10^k+1}{2} $ не целое.)  Task 3 Напишите функцию, которая реализует описанную предвзятую монету,В качестве входных параметров будут $ N >0 $ и $ 0 \leq B < N $.Возвращаемое значение функции - "Орел" или "Решка".<jupyter_code>def biased_coin(N,B):
    from random import randrange
    #
    # your solution is here
    #<jupyter_output><empty_output><jupyter_text>click for our solution  Task 4Мы используем предвзятую монету, реализованную в Task 3. (Можете воспользоваться реализацией из решения.)В качестве $ N $ возьмем 101.Определяем $ B $ рандомно, не проверяя полученное значение .Задача состоит в том, чтобы установить значение предвзятости $ B $ экспериментально, используя предвзятую монету 500 раз.Проверьте реальное значение предвзятости и вычислите ошибку.<jupyter_code>from random import randrange
N = 101
B = randrange(100)
#
# your solution is here
#<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.16789465433453518, 'fraction_numerical': 0.04107226838062392, 'mean_word_length': 4.2946058091286305, 'pattern_counts': {'":': 0, '<': 19, '<?xml version=': 0, '>': 20, 'https://': 1, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 1, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '4', 'dir': 'jupyter-structured-clean-dedup', 'id': '455965', 'license': 'Apache-2.0', 'n_tokens_mistral': 2713, 'n_tokens_neox': 2795, 'n_words': 637, 'path': 'bronze/B06_Coin_Flip.ipynb', 'repo_name': 'QRussia/basics-of-quantum-computing-translate', 'size': '6391'}