fork(2) download
  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. }
Success #stdin #stdout 0.02s 5284KB
stdin
Standard input is empty
stdout
Days: 1495
Total images: 321
Unique shown: 45

Min freq: 2, Max freq: 57

svema: 5/40 shown
em: 6/37 shown
labyrinth: 4/32 shown
es: 6/48 shown
tftf: 7/54 shown
tftl: 7/46 shown
paleo: 5/30 shown
other: 5/34 shown