Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <random>
- #include <set>
- #include <map>
- int main() {
- // Actual album sizes from simonstalenhag-se-metadata
- const char* names[] = {"svema","em","labyrinth","es","tftf","tftl","paleo","other"};
- int albumSizes[] = {40, 37, 32, 48, 54, 46, 30, 34};
- int numAlbums = 8;
- int totalImages = 0;
- for (int i = 0; i < numAlbums; i++) totalImages += albumSizes[i];
- std::set<std::pair<int,int>> seen;
- std::map<std::pair<int,int>, int> freq;
- // ~1495 days from 2022-02-03 to 2026-03-09
- int days = 1495;
- for (int day = 0; day < days; day++) {
- // Call 1: pick album (seed = day)
- std::mt19937 eng1(day);
- std::uniform_int_distribution<int> d1(0, numAlbums - 1);
- int album = d1(eng1);
- // Call 2: pick image — SAME seed!
- std::mt19937 eng2(day);
- std::uniform_int_distribution<int> d2(0, albumSizes[album] - 1);
- int image = d2(eng2);
- freq[{album, image}]++;
- seen.insert({album, image});
- }
- std::cout << "Days: " << days << "\n";
- std::cout << "Total images: " << totalImages << "\n";
- std::cout << "Unique shown: " << seen.size() << "\n\n";
- int minF = 1e9, maxF = 0;
- for (auto it = freq.begin(); it != freq.end(); ++it) {
- if (it->second < minF) minF = it->second;
- if (it->second > maxF) maxF = it->second;
- }
- std::cout << "Min freq: " << minF << ", Max freq: " << maxF << "\n\n";
- // Per-album breakdown
- for (int a = 0; a < numAlbums; a++) {
- int count = 0;
- for (auto it = seen.begin(); it != seen.end(); ++it)
- if (it->first == a) count++;
- std::cout << names[a] << ": " << count << "/" << albumSizes[a] << " shown\n";
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment