Guest User

Untitled

a guest
Mar 9th, 2026
36
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.05 KB | None | 0 0
  1. #include <iostream>
  2. #include <random>                                                                
  3. #include <set>
  4. #include <map>                                                                  
  5.                
  6. int main() {
  7.     // Actual album sizes from simonstalenhag-se-metadata
  8.     const char* names[] = {"svema","em","labyrinth","es","tftf","tftl","paleo","other"};
  9.     int albumSizes[] = {40, 37, 32, 48, 54, 46, 30, 34};
  10.     int numAlbums = 8;
  11.  
  12.     int totalImages = 0;
  13.     for (int i = 0; i < numAlbums; i++) totalImages += albumSizes[i];
  14.  
  15.     std::set<std::pair<int,int>> seen;
  16.     std::map<std::pair<int,int>, int> freq;
  17.  
  18.     // ~1495 days from 2022-02-03 to 2026-03-09
  19.     int days = 1495;
  20.  
  21.     for (int day = 0; day < days; day++) {
  22.         // Call 1: pick album (seed = day)
  23.         std::mt19937 eng1(day);
  24.         std::uniform_int_distribution<int> d1(0, numAlbums - 1);
  25.         int album = d1(eng1);
  26.  
  27.         // Call 2: pick image — SAME seed!
  28.         std::mt19937 eng2(day);
  29.         std::uniform_int_distribution<int> d2(0, albumSizes[album] - 1);
  30.         int image = d2(eng2);
  31.  
  32.         freq[{album, image}]++;
  33.         seen.insert({album, image});
  34.     }
  35.  
  36.     std::cout << "Days: " << days << "\n";
  37.     std::cout << "Total images: " << totalImages << "\n";
  38.     std::cout << "Unique shown: " << seen.size() << "\n\n";
  39.  
  40.     int minF = 1e9, maxF = 0;                      
  41.     for (auto it = freq.begin(); it != freq.end(); ++it) {
  42.         if (it->second < minF) minF = it->second;                                
  43.         if (it->second > maxF) maxF = it->second;
  44.     }                                                                            
  45.     std::cout << "Min freq: " << minF << ", Max freq: " << maxF << "\n\n";
  46.  
  47.     // Per-album breakdown
  48.     for (int a = 0; a < numAlbums; a++) {
  49.         int count = 0;
  50.         for (auto it = seen.begin(); it != seen.end(); ++it)
  51.             if (it->first == a) count++;
  52.         std::cout << names[a] << ": " << count << "/" << albumSizes[a] << " shown\n";
  53.     }
  54.     return 0;
  55. }
Advertisement
Add Comment
Please, Sign In to add comment