Мегаобучалка Главная | О нас | Обратная связь


Private Sub CommandButton1_Click() 'расчет и анализ распределения случайных чисел программно



2019-11-13 274 Обсуждений (0)
Private Sub CommandButton1_Click() 'расчет и анализ распределения случайных чисел программно 0.00 из 5.00 0 оценок




Dim x() As Integer, y() As Double ' описываем массивы чисел

Dim n As Integer 'переменная размера выборки массива

Range(Cells(6, 1), Cells(100, 2)).Clear 'очистка ячеек таблицы A6:C100 (две столбца по 50 чисел )

summa = 0 'обнуление суммы вероятностей

n = [C4] 'получение размера массива

If n <= 0 Then 'проверка ввода положительных чисел

MsgBox "Введите положительные числа", 48

Exit Sub

End If

ReDim x(0 To n) As Integer ' переопределение массивов

ReDim y(0 To n) As Double

ListBox1.Clear 'очистка элемента управления от информации

Call sluchprogr(x, n, ListBox1) 'вызов функции генератора случайных чисел

Cells(5, 1).Activate 'активация ячейки А5

For i = [A4] To [B4] Step [D4] 'формирование списка диапазона чисел

ActiveCell.Offset(1, 0).Activate

ActiveCell.Value = i

Next

For i = [A4] To [B4] Step [D4] 'очистка ячеек результата расчета

y(i) = 0

Next

For i = [A4] To [B4] Step [D4] 'вычисление вероятности появления случайных чисел

For j = 1 To n

 If x(j) = i Then y(i) = y(i) + 1

 Next

 y(i) = y(i) / n

Next

Cells(5, 2).Activate ' активация ячейки B5

For i = [A4] To [B4] Step [D4] 'занесение результатов определения вероятности

ActiveCell.Offset(1, 0).Activate

ActiveCell.Value = y(i)

summa = summa + y(i)

Next

ActiveCell.Offset(1, 0).Activate 'занесение суммы вероятностей (должна быть 1)

ActiveCell.Value = summa

d = 0 'вычисления критерия хи-квадрат

hi = 0

For i = [A4] To [B4] Step [D4]

d = (y(i) * n) - n / (([B4] - [A4] + 1) / [D4])

hi = hi + (d * d) / (n / (([B4] - [A4]) / [D4]))

[E20] = hi

Next

End Sub

 

8. Вставить кнопку CommandButton 2 согласно рисунка 2 Меню→Разработчик→Вставить→Кнопка.

Изменить надпись на кнопке Properties → Caption →”Рисование диаграммы”.             

9. Дважды щелкнуть по кнопке  ”Рисование диаграммы” для открытия среды программирования VBA .

Вставить программный код на языке VBA вместо автоматически сгенерированного программой:

Private Sub CommandButton2_Click()

Call график 'вызов функции рисования графика

End Sub

Вставить CommandButton 3 согласно рисунка1 меню-Разработчик-Вставить-Кнопка

Изменить Properties - Caption -Очистить содержимое ячеек              

Дважды щелкнуть по кнопке для открытия среды программирования VBA

Вставить код вместо автоматически сгенерированного

Private Sub CommandButton3_Click()

ListBox1.Clear 'очистка элементов управления от информации

ListBox2.Clear

Rng = "$A$6:$C$" & (10 + [B4])

Range(Rng).Clear

End Sub

 

10. Вставить кнопку CommandButton 4 согласно рисунка1 Меню→Разработчик→Вставить→Кнопка.

Изменить надпись на кнопке Properties → Caption →”Аппаратный генератор” 

Дважды щелкнуть по кнопке  ”Аппаратный генератор” для открытия среды программирования VBA .

Вставить программный код на языке VBA вместо автоматически сгенерированного программой:

Private Sub CommandButton4_Click() 'расчет и анализ распределения случайных чисел аппаратно

Dim k As Integer 'определение типа переменных

Dim i As Long

Dim mas As Integer

Dim summa1 As Double

Dim x As Integer, y() As Double

Dim n As Integer

summa1 = 0 'установка начальных значений

mas = 0

ListBox2.Clear 'очистка элементов управления

Range(Cells(6, 3), Cells(100, 3)).Clear

n = [C4] 'установка размера массива

If n <= 0 Then 'проверка ввода положительных чисел

MsgBox "Введите положительные числа", 48

Exit Sub

End If

ReDim y(0 To n) As Double ' переопределение массива

Cells(5, 1).Activate 'активация ячейки А5

For i = [A4] To [B4] Step [D4] 'определение значений диапазона чисел

ActiveCell.Offset(1, 0).Activate

ActiveCell.Value = i

Next

For i = [A4] To [B4] Step [D4] 'обнуление предыдущих результатов

y(i) = 0

Next

filename = TextBox1.Text 'получение адреса файла звукозаписи

If filename <> "d:\proverka.wav" Then MsgBox " Файл не найден !": Exit Sub

On Error Resume Next

Open filename For Binary As #1 ' открытие файла звукозаписи на чтение

k = 0

dat = 0

b = 1

sdf:

Get #1, b, dat

If dat = & H 61746164 Then GoTo qwert 'поиск начала данных в файле звукозаписи

b = b + 1: GoTo sdf

Qwert:

For i = 0 To FileLen ( filename ) Step 4 'цикл чтения данных из файла звукозаписи через 4 байта

Get #1, i + b + 4, a 'Читаем из файла одно значение левого стереоканала (для правого-i+b+6)

If i > 100 Then 'убираем первые сэмплы данных пока не стабилизируется микрофонный канал

x = a Mod 10 'определяем младший случайный разряд в сэмпле

ListBox2.AddItem (Str(x)) 'выводим полученный массив случайных чисел

For j = [A4] To [B4] Step [D4] 'вычисление результатов вероятностей

If x = j Then

 mas = mas + 1

 y(j) = y(j) + 1

End If

Next

End If

If mas = [C4] Then Exit For 'окончание цикла при получении заданного размера массива

Next i

Close #1 'закрытие файла звукозаписи после чтения

Cells(5, 3).Activate ' активация ячейки C5

For i = [A4] To [B4] Step [D4] ' вывод результатов в ячейки

y(i) = y(i) / n

ActiveCell.Offset(1, 0).Activate

ActiveCell.Value = y(i)

summa1 = summa1 + y(i)

Next

ActiveCell.Offset(1, 0).Activate ' вывод суммирования вероятностей ( должно быть 1)

ActiveCell.Value = summa1

d = 0 'расчет критерия хи-квадрат

hi = 0

For i = [A4] To [B4] Step [D4]

d = (y(i) * n) - n / (([B4] - [A4] + 1) / [D4])

hi = hi + (d * d) / (n / (([B4] - [A4]) / [D4]))

[F20] = hi

Next

End Sub

 

11. Добавить в программный код в самом  начале перед всеми функциями следующее:

Dim a As Long: Dim i As Long: Dim summa As Double ' определяем тип переменных

Dim dat As Long: Dim b As Long: Dim filename As String

Dim d As Double: Dim hi As Double

 

12. Создать модуль Module 1 в Меню→ Insert → Module 1.

Добавить следующий код в модуль Module 1 :

 

Public Sub sluchprogr ( a () As Integer , kolvo As Variant , obj 1 As Object ) 'функция генерации случайных чисел

Dim i As Integer

Obj1.Clear 'очистка элемента управления от информации



2019-11-13 274 Обсуждений (0)
Private Sub CommandButton1_Click() 'расчет и анализ распределения случайных чисел программно 0.00 из 5.00 0 оценок









Обсуждение в статье: Private Sub CommandButton1_Click() 'расчет и анализ распределения случайных чисел программно

Обсуждений еще не было, будьте первым... ↓↓↓

Отправить сообщение

Популярное:
Как вы ведете себя при стрессе?: Вы можете самостоятельно управлять стрессом! Каждый из нас имеет право и возможность уменьшить его воздействие на нас...
Почему двоичная система счисления так распространена?: Каждая цифра должна быть как-то представлена на физическом носителе...



©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (274)

Почему 1285321 студент выбрали МегаОбучалку...

Система поиска информации

Мобильная версия сайта

Удобная навигация

Нет шокирующей рекламы



(0.008 сек.)