# Generalized Birthday Problem

## MATL, 16 bytes

365:Z^!tXM=s>~Ym


First input is N, second is k.

Try it online!

This is an enumeration-based approach, like Dennis' Jelly answer, so input numbers should be kept small due to memory limitations.

365:   % Vector [1 2 ... 365]
Z^     % Take N implicitly. Cartesian power. Gives a 2D array with each
% "combination" on a row
!      % Transpose
t      % Duplicate
XM     % Mode (most frequent element) of each column
=      % Test for equality, element-wise with broadcast. For each column, gives
% true for elements equal to that column's mode, false for the rest
s      % Sum of each column. Gives a row vector
>~     % Take k implicitly. True for elements equal or greater than k
Ym     % Mean of each column. Implicitly display


## Jelly, 17 16 bytes

ĠZL
365ṗÇ€<¬µS÷L


Extremely inefficient. Try it online! (but keep N below 3)

### How it works

365ṗÇ€<¬µS÷L  Main link. Left argument: N. Right argument: K

365ṗ          Cartesian product; generate all lists of length N that consist of
elements of [1, ..., 365].
Ç€        Map the helper link over all generated lists. It returns the highest
amount of people that share a single birthday.
<       Compare each result with K.
¬      Negate.
µS÷L  Take the mean by dividing the sum by the length.

ĠZL           Helper link. Argument: A (list of integers)

Ġ             Group the indices have identical values in A.
Z            Zip; transpose rows with columns.
L           Take the length of the result, thus counting columns.