72 catalogue items each start with one unit of exposure (a small seed rating so no item has zero probability). Every round the recommender fills a list of K slots by drawing items with probability:
P(i) = (1-ε) · (c_i+1)^α / Σ_j (c_j+1)^α + ε · (1/N)
where c_i is item i's exposure count so far, α is how strongly the algorithm favours already-popular items (pure collaborative-filtering popularity ranking), and ε is the fraction of picks replaced by a uniform random exploration slot. Whichever items get picked have their exposure count incremented, which is fed straight back into next round's probabilities — the same closed loop a live recommender runs on real click/watch/purchase data.
At α = 0 every item is equally likely regardless of history (no bias). As α grows past ~1, small early leads compound: popular items get recommended more, which makes them more popular, which gets them recommended even more — the "Matthew effect" or rich-get-richer dynamic documented in real collaborative-filtering and engagement-ranking systems. Raising ε injects deliberate diversity/cold-start exploration that slows the collapse.
The radial chart's bar length and colour encode each item's current exposure (log-scaled so early differences stay visible). Below it, the Lorenz curve plots cumulative exposure share against cumulative item share — the further it sags below the diagonal, the more unequal the catalogue; the shaded gap between curve and diagonal is exactly twice the Gini coefficient's area. The third panel tracks Gini and top-10% share over simulated rounds, so you can watch concentration build (or stay flat) in real time.
- Gini coefficient — 0 means every item has identical exposure, 1 means one item has captured everything.
- Top-10% share — the fraction of all exposure held by the most-exposed 10% of items; 10% is the "no concentration" baseline.
- Long tail — the percentage of items still sitting at their starting seed, i.e. never once recommended.