чатГПТ:
Отлично, это классическое упражнение на моделирование + сравнение с теорией.
Давай я разложу, как это сделать в Excel (VBA):
Теоретическая часть (перед кодом)
Условия:
– 100 студентов.
– Выбираем 10 студентов с возвращением (с повторением).
Вероятность 1: все разные
Первая позиция — 100 возможных студентов.
Вторая — 99 (чтобы быть другим), третья — 98 … до 91.
Вероятность:
[
P_{\text{все разные}} = \frac{100}{100} \cdot \frac{99}{100} \cdot \frac{98}{100} \cdots \frac{91}{100}
]
Вероятность 2: хотя бы один выбран ≥2 раз
Это просто дополнение к предыдущему:
[
P_{\text{хотя бы один ≥2}} = 1 - P_{\text{все разные}}
]
Вероятность 3: хотя бы один выбран ≥3 раз
Считается сложнее; можно через распределение Пуассона, но проще симулировать.
(В Excel/VBA это мы и сделаем.)
Симуляция в Excel с VBA
- Открой Excel.
- Нажми Alt + F11 (откроется редактор VBA).
- В меню «Вставка» → «Модуль».
- Вставь код:
Option Explicit
Sub Model_Students()
Dim i As Long, j As Long
Dim student(1 To 10) As Integer
Dim counts(1 To 100) As Integer
Dim totalRuns As Long
Dim allDifferent As Long
Dim atLeast2 As Long
Dim atLeast3 As Long
Dim found2 As Boolean, found3 As Boolean
totalRuns = 10000 'количество прогонов
Randomize
For i = 1 To totalRuns
'сброс счетчиков
For j = 1 To 100
counts(j) = 0
Next j
'выбираем 10 студентов
For j = 1 To 10
student(j) = Int(100 * Rnd) + 1 'случайное число от 1 до 100
counts(student(j)) = counts(student(j)) + 1
Next j
'проверка условий
found2 = False
found3 = False
For j = 1 To 100
If counts(j) > 1 Then found2 = True
If counts(j) > 2 Then found3 = True
Next j
'считаем исходы
If found2 = False Then allDifferent = allDifferent + 1
If found2 = True Then atLeast2 = atLeast2 + 1
If found3 = True Then atLeast3 = atLeast3 + 1
Next i
'выводим результаты
With Sheets(1)
.Range("A1").Value = "Всего прогонов"
.Range("B1").Value = totalRuns
.Range("A2").Value = "Все разные"
.Range("B2").Value = allDifferent / totalRuns
.Range("A3").Value = "Хотя бы один ≥2"
.Range("B3").Value = atLeast2 / totalRuns
.Range("A4").Value = "Хотя бы один ≥3"
.Range("B4").Value = atLeast3 / totalRuns
End With
MsgBox "Готово!"
End Sub
- Закрой редактор VBA.
- Запусти макрос (Alt+F8, выбери Model_Students, «Выполнить»).
В ячейках A1:B4 появятся результаты симуляции.
Теоретические ответы (для сравнения)
–
Все разные:
[
P = \frac{100}{100}\cdot \frac{99}{100}\cdot\dots\frac{91}{100}\approx 0.628
]
–
Хотя бы один ≥2:
[
P = 1 - 0.628 \approx 0.372
]
–
Хотя бы один ≥3:
точно — сложная формула; по симуляции получится примерно
0.03–0.04 (3–4%).
Хочешь, я тебе сразу посчитаю третью вероятность аналитически (чтобы можно было сверить с макросом)?
Отлично, это классическое упражнение на моделирование + сравнение с теорией.
Давай я разложу, как это сделать в Excel (VBA):
Теоретическая часть (перед кодом)
Условия:
– 100 студентов.
– Выбираем 10 студентов с возвращением (с повторением).
Вероятность 1: все разные
Первая позиция — 100 возможных студентов.
Вторая — 99 (чтобы быть другим), третья — 98 … до 91.
Вероятность:
[
P_{\text{все разные}} = \frac{100}{100} \cdot \frac{99}{100} \cdot \frac{98}{100} \cdots \frac{91}{100}
]
Вероятность 2: хотя бы один выбран ≥2 раз
Это просто дополнение к предыдущему:
[
P_{\text{хотя бы один ≥2}} = 1 - P_{\text{все разные}}
]
Вероятность 3: хотя бы один выбран ≥3 раз
Считается сложнее; можно через распределение Пуассона, но проще симулировать.
(В Excel/VBA это мы и сделаем.)
Симуляция в Excel с VBA
- Открой Excel.
- Нажми Alt + F11 (откроется редактор VBA).
- В меню «Вставка» → «Модуль».
- Вставь код:
Option Explicit
Sub Model_Students()
Dim i As Long, j As Long
Dim student(1 To 10) As Integer
Dim counts(1 To 100) As Integer
Dim totalRuns As Long
Dim allDifferent As Long
Dim atLeast2 As Long
Dim atLeast3 As Long
Dim found2 As Boolean, found3 As Boolean
totalRuns = 10000 'количество прогонов
Randomize
For i = 1 To totalRuns
'сброс счетчиков
For j = 1 To 100
counts(j) = 0
Next j
'выбираем 10 студентов
For j = 1 To 10
student(j) = Int(100 * Rnd) + 1 'случайное число от 1 до 100
counts(student(j)) = counts(student(j)) + 1
Next j
'проверка условий
found2 = False
found3 = False
For j = 1 To 100
If counts(j) > 1 Then found2 = True
If counts(j) > 2 Then found3 = True
Next j
'считаем исходы
If found2 = False Then allDifferent = allDifferent + 1
If found2 = True Then atLeast2 = atLeast2 + 1
If found3 = True Then atLeast3 = atLeast3 + 1
Next i
'выводим результаты
With Sheets(1)
.Range("A1").Value = "Всего прогонов"
.Range("B1").Value = totalRuns
.Range("A2").Value = "Все разные"
.Range("B2").Value = allDifferent / totalRuns
.Range("A3").Value = "Хотя бы один ≥2"
.Range("B3").Value = atLeast2 / totalRuns
.Range("A4").Value = "Хотя бы один ≥3"
.Range("B4").Value = atLeast3 / totalRuns
End With
MsgBox "Готово!"
End Sub
- Закрой редактор VBA.
- Запусти макрос (Alt+F8, выбери Model_Students, «Выполнить»).
В ячейках A1:B4 появятся результаты симуляции.
Теоретические ответы (для сравнения)
–
Все разные:
[
P = \frac{100}{100}\cdot \frac{99}{100}\cdot\dots\frac{91}{100}\approx 0.628
]
–
Хотя бы один ≥2:
[
P = 1 - 0.628 \approx 0.372
]
–
Хотя бы один ≥3:
точно — сложная формула; по симуляции получится примерно
0.03–0.04 (3–4%).
Хочешь, я тебе сразу посчитаю третью вероятность аналитически (чтобы можно было сверить с макросом)?