@slaverchief

Как получается такой ответ?

62568b7b85701814018891.png
есть такая задача, результатом ответа которого является 0,48, исходя из пояснения ответа автором задачи. Я нашёл это чересчур большим значением для такой маленькой выборки, поэтому сразу побежал моделировать её в питоне и представить это событие в строчках кода и проиграть его множество раз. Вот код, если кому интересно, возможно, он и нечистый, спорить не буду.
from random import randint

p_copy = [] #это копия списка мест для присвоения далее
for i in range(26):
    p_copy.append(i)
c = 0 #это счётчик попаданий 7,4 в общую выборку, 7 и 4 тут предстаёт как два друга
v = 10**5 #просто указатель количества повторений события
for s in range(v):
    p = p_copy.copy()  #список мест
    plc = [] #список групп из двух человек в виде множества из двух значений (n, n)
    while p != []:
        i = randint(0, len(p)-1) #случайное число, отбирающее конкретного человека из всех
        fst = p[i]
        del p[i]
        n = randint(0, len(p)-1)
        scnd = p[n]
        del p[n]
        plc.append((fst, scnd)) #добавление в список группы группу из случайно отобранных из общего количества людей
    if (7,4) in plc:
        c+=1

print(c/v) #вычисление частоты выпадение того самого события

Суть в том, что вроде перепроверил правильность случайной выборки, но проработав код на множестве повторений, вплоть до миллиона и неоднократно, я всегда получал значение, приблизительно равное 0.2. Тут у меня две проблемы, во-первых, мой ответ оказался 0.4, а во-вторых, я не до конца понимаю, допустил ли я ошибку в коде или ответ у задачи неверный, хотелось бы услышать вашего ответа.
  • Вопрос задан
  • 46 просмотров
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Событие A - Андрей попал в группу 1
Событие B - Андрей попал в группу 2
Событие С - Сергей попал в группу 1
Событие D - Сергей попал в группу 2
P = P(A) * P(C|A) + P(B) * P(D|B) = 1/2 * 12/25 + 1/2 * 12/25 = 12/25 = 0.48

const shuffle = (arr) => {
  for (let i = 0; i < arr.length - 1; i += 1) {
    const j = Math.floor(Math.random() * (i + 1));
    [arr[i], arr[j]] = [arr[j], arr[i]];
  }
}

const test = () => {
  let p = 0;
  for (let i = 0; i < 100000; i += 1) {
    const arr = Array(26).fill().map((el, idx) => idx % 2);
    shuffle(arr);
    p += arr[0] === arr[1] ? 1 : 0;
  }
  return p / 100000;
}

console.log(test()); // 0.47915
console.log(test()); // 0.48109
console.log(test()); // 0.47811
console.log(test()); // 0.47881
console.log(test()); // 0.48162
console.log(test()); // 0.48174
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@slaverchief Автор вопроса
чёрт, я понял, что неправильно понял задачу, забейте. Считайте решением комментарий выше.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы