Всякие лабы разных вариантов + задания / laby / Report_1
.docxЛабораторная работа №1
Вариант 2
Выполнили:
ст. гр.
Задание:
Министерство сельского хозяйства некоторой страны имеет информационно-справочную систему (ИСС), состоящую из четырёх основных баз данных: сельскохозяйственной, технической, нормативной и экономической информации. Все запросы, направляемые в ИСС, обращаются к базе данных сельскохозяйственной информации. Кроме того, многие запросы связаны с получением дополнительной информации: 40% запросов связаны с получением технической информации, 30% – нормативной, 40% – экономической. Запрос может быть связан как с получением дополнительной информации одного вида (например, только нормативной), так и нескольких (например, нормативной и технической).
Для сельскохозяйственных предприятий и организаций плата за получение информации (за один запрос) следующая: сельскохозяйственная информация – 10 ден. ед., техническая – 12 ден. ед., нормативная – 15 ден. ед., экономическая – 20 ден. ед. Если требуется информация нескольких видов (например, сельскохозяйственная, нормативная и экономическая), то плата суммируется (в данном случае она составит 10+15+20=45 ден. ед.). Для пользователей, не относящихся к сфере сельского хозяйства, плата повышается в 1,1 раза; такие пользователи составляют 25% от всех пользователей ИСС.
Составить алгоритм и программу (на основе метода Монте-Карло) для определения следующих величин:
– вероятность того, что по запросу потребуется дополнительная информация (т.е. не только сельскохозяйственная);
– среднюю выручку от обработки одного запроса.
Код (VBA MS Excel):
Sub Кнопка1_щелчок()
N = Range("B5").Value
ThInf = Range("B2").Value / 100
NorInf = Range("B3").Value / 100
EcInf = Range("B4").Value / 100
CInf = 10
CThInf = 12
CNorInf = 15
CEcInf = 20
Enhsm = 1.1
PEnhsm = 0.25
EnhP = 0
Sum = 0
Sum1 = 0
flag = 0
SumFlg = 0
For i = 1 To N
Sum1 = Sum1 + CInf
PThInf = Rnd
PNorInf = Rnd
PEcInf = Rnd
If PThInf <= ThInf Then
Sum1 = Sum1 + CThInf
flag = 1
End If
If PNorInf <= NorInf Then
Sum1 = Sum1 + CNorInf
flag = 1
End If
If PEcInf <= EcInf Then
Sum1 = Sum1 + CEcInf
flag = 1
End If
If flag = 1 Then
SumFlg = SumFlg + 1
End If
EnhP = Rnd
If EnhP < PEnhs Then
Sum1 = Sum1 * 1.1
End If
Sum = Sum + Sum1
flag = 0
Sum1 = 0
Next i
Range("B7").Value = SumFlg / N
Range("B8").Value = Sum / N
End Sub
Пример результата: