Главная страница
Навигация по странице:

  • Используемые инструменты: Python 3.6Теорема

  • Алгоритм

  • отчёт по Модел систем. Моделирование случайных чисел


    Скачать 84.25 Kb.
    НазваниеМоделирование случайных чисел
    Анкоротчёт по Модел систем
    Дата28.03.2023
    Размер84.25 Kb.
    Формат файлаdocx
    Имя файлаOchet_laboratornaya_rabota_2.docx
    ТипДокументы
    #1020289

    МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РОССИЙСКОЙ

    ФЕДЕРАЦИИ

    ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ АВТОНОМНОЕ

    ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ

    «Национальный исследовательский ядерный университет

    «МИФИ»

    Обнинский институт атомной энергетики

    Отделение интеллектуальных кибернетических систем

    ОТЧЁТ

    по лабораторной работе № 2 курс: “Моделированию систем”

    тема: “ Моделирование случайных чисел ”

    Выполнил: Пауков И.С

    Группа: ИС-Б19

    Проверила: Гулина О.М.

    Обнинск, 2022

    Задача:

    Смоделировать случайную величину ξ с заданной функцией распределения:



    Используемые инструменты:

    Python 3.6

    Теорема:

    Случайная величина ξ, определенная на (a,b) и
    удовлетворяющая уравнению a, или F(ξ)= γ, имеет плотность распределения f(x). Согласно условию нормировки:

    0 10 |0 10 → a=10

    ξ

    fξ( x)=10 x9 ; 0 fξ(x)dx=γ ; u10|ξ0=γ ; γ=ξ10 ;

    ξ=γ(1/10)

    Количество интервалов считается по формуле:

    𝑟 = (1 + 3,3 lg(𝑛))

    Вероятность попадания в i-й интервал считается по формуле:

    ∆=

    = 𝑎 + 𝑖∆ = 𝑎 + (𝑖 − 1)∆

    𝑝𝑖 = 𝐹( ) – 𝐹( )

    Алгоритм:

    #python 3.6

    from math import *

    Num=2500 #число элементов

    r=0#кол-во интервалов

    p=0#теоретическая вероятность попадания в каждый интервал

    array=[] #массив псевдослучайных чисел

    newarray=[]#новый массив

    VerU=[]

    p_i =[] #количество попаданий в каждый интервал

    X2=0 #хи-квадрат

    def fraction(x):

    # функция для расчета дробной части

    return x - int(x)

    def fillArray():

    # функция для заполнения массива

    y0=0.45864863

    accrs=8

    for i in range(Num):

    array.append(y0)

    y0=(10 ** -accrs)*int((10 ** accrs)*fraction(float(((1-y0) ** 3)*(10 ** accrs)))) #метод середины квадратов

    print("Массив заполнен псевдослучайными числами.")

    for i in range(Num):

    #по новой формуле заполняем массив

    newarray.append(array[i]**0.1)

    #Вероятность попадания случайной величины в i-ый интервал. I меняется от 1 до #r (количество интервалов, которое считается по формуле 𝑟 = (1 + 3,3 lg(𝑛))

    def calc_pi():

    print("Рассчет количества попаданий в каждый интервал.")

    global newarray, r, p

    r = int((1 + 3.3 * log10(Num)))

    p = float((1 / r))

    print("Число интервалов", r)

    for i in range(r):

    #обнуляем p_i

    p_i.append(0)

    print("Распределение по интервалам:")

    for i in range(r):

    for j in range(r):

    if (newarray[j]>(i*p) and newarray[j]<((i+1)*p)):

    p_i[i]+=1

    for i in range(r):

    print(p_i[i], end = ', ')
    def calc_X2():

    print("Рассчет Х2.")

    X2 = 0

    tver=[]

    for i in range(r):

    tver.append((((i+1)/r)**10)-(i/r)**10)

    for i in range(r):

    X2+=((p_i[i]-(Num*tver[i])) ** 2)/(Num*tver[i])

    print("X2 = ", X2)
    def show():

    n=int(input("Вывести последовательность до: "))

    if n>Num:

    n=Num

    for i in range(n):

    print(newarray[i], end = ', ')
    fillArray()

    calc_pi()

    calc_X2()

    show()
    Результаты:

    Число интервалов 12

    Распределение по интервалам:



    X2 = 4.213018302676952



    При s = 11 и P ≥ 0.95 теоретическое значение χ2=4.58. Экспериментальное значение χ2 при γ0= 0.45864863 получилось 4.213018302676952.

    Выводы:

    В результате эксперимента с заданным законом распределения – была получена согласованность элементов выборки, состоящая из 2500 независимых элементов, с гипотезой о выбранном законе распределения подтверждается полученной оценкой:

    χ2 = 4.213018302676952 ≤ χ² = 4.58

    где количество степеней свободы: s = 11

    доверительная вероятность: P>0.95


    написать администратору сайта