<jupyter_start><jupyter_text><NAME>, 4 курс, 3 группа  Условие №4, стр.52Контролируемый признак ξ  распределен по закону N_1(μσ2). Множество допустимых значений признака ограничено полем допуска [a,b] (μ=(a+b)/2).Оценить вероятность выхода за поле допуска по n=1000 реализациям CB ξ. Рассмотреть случаи:        a) Увеличение степени рассеяния.a=57, b=63, σ=1,2,3        b) Смещение средних a=57, b=63.σ=1, μ=58,65  Ход работыХод работы. Смоделируем базовую случайную величину α с использованием мультипликативного конгруэнтного метода:$\alpha_i = \alpha_i ' / M$$\alpha_i ' = \beta \alpha\_{i - 1} ' mod M$$i = 1, 2, ...$$\alpha_0 ' = \beta = 65539$$M = 2147483648$Нормальная СВ  моделируется с помощью моделирования случайно базовой величины:$\eta = \sqrt{-2 \ln a_1} \cos (2\pi a_2)$  Реализация<jupyter_code>import numpy as np
from scipy.special import erfinv

from matplotlib import pyplot as plt
class BRV:
    def __init__(self, seed=65539):
        self.alpha = seed
        self.beta = 65539
        self.M = 2147483648
        
    def __call__(self):
        self.alpha = (self.alpha * self.beta) % self.M
        return self.alpha / self.M
class NRV(BRV):
    def __init__(self, mu, sigma, seed=65539):
        super(NRV, self).__init__(seed)
        self.mu = mu
        self.sigma = sigma
        
    def __call__(self):
        brv = super(NRV, self).__call__()
        return self.mu + self.sigma * np.sqrt(2) * erfinv(2 * brv - 1)
def experiments(a, b, mu, sigma, n=1000, seed=65539):
    count = 0
    rand = NRV(mu, sigma)
    for experiment in range(n):
        if not a <= rand() <= b:
            count += 1
    return count / n
for sigma in range(1, 4):
    a = 57
    b = 63
    mu = (a + b) / 2
    print("sigma = {}, prob = {}".format(sigma, experiments(a, b, mu, sigma, 65539)))
for mu in [58, 65]:
    print("mu = {}, prob = {}".format(mu, experiments(57, 63, mu, 1, 65539)))<jupyter_output>mu = 58, prob = 0.15853156136041135
mu = 65, prob = 0.9774180259082379
{'fraction_non_alphanumeric': 0.13373554550025138, 'fraction_numerical': 0.07792860734037205, 'mean_word_length': 2.9484126984126986, 'pattern_counts': {'":': 0, '<': 7, '<?xml version=': 0, '>': 5, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 1, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '1', 'dir': 'jupyter-structured-clean-dedup', 'id': '544749', 'license': 'MIT', 'n_tokens_mistral': 900, 'n_tokens_neox': 855, 'n_words': 213, 'path': '7_sem/ism/lab1.ipynb', 'repo_name': 'kventinel/BSU', 'size': '1994'}