juan_gandhi: (Default)
Juan-Carlos Gandhi ([personal profile] juan_gandhi) wrote2025-02-26 10:00 pm
Entry tags:

задачка из теорвера

Тут участник [personal profile] green_fr  задал задачку:

Есть колода карт со, скажем, тремя тузами. Мы вытаскиваем карту за картой; какова средняя ожидаемая длина последовательности до туза.

Я сначала было, забыв комбинаторику, понёс чушь. Потом понял, что это же чёрные и белые шары в коробке. Вот и программа тут внизу.

Но смешно другое. Иду я сегодня из магазина и вычисляю. И тут бац - на тротуаре и на дороге рядом разбросаны карты. Несколько лицами (или как их там) кверху. Ни одного туза. А одна карта рубашкой кверху, под машиной лежит. Перевернул. Туз червей.

 


import scala.language.implicitConversions
import scala.language.postfixOps

@main
def main(): Unit =
def fact(n: Int): BigInt = if (n < 2) 1 else (n * fact(n - 1))

class Cards(nCards: Int, nAces: Int):
val n = nCards-nAces
def `probability of first ace at`(k: Int) = {
val `probability of k-1 non-aces` =
(fact(n) * fact(nCards - k + 1)).toDouble / (fact(n-k+1) * fact(nCards)).toDouble
val `probability of k-th ace` = nAces.toDouble / (nCards-k) `probability of k-1 non-aces` * `probability of k-th ace`
} def `expected run` = (1 to n).map(i => i*`probability of first ace at`(i)).sum println(Cards(52,4).`expected run`)
>10.933092006033183

[personal profile] sassa_nf 2025-02-27 07:47 pm (UTC)(link)
Скільки карт до туза? Ну... десяток чирви - 1/5, двійок пік - 1/5, ... всіх карт разом - 48/5
Edited 2025-02-27 19:49 (UTC)