fork download
  1. #include <tuple>
  2. #include <random>
  3. #include <functional>
  4.  
  5. typedef std::tuple<unsigned char,unsigned char,unsigned char> rgb_tuple;
  6.  
  7. class color_table{
  8. public:
  9. void generate(std::function<rgb_tuple(const unsigned char&)> predicate);
  10. unsigned char red_table[255];
  11. unsigned char green_table[255];
  12. unsigned char blue_table[255];
  13. };
  14.  
  15. template <class RANDOM>
  16. static rgb_tuple random_color(RANDOM engine){
  17. std::uniform_int_distribution<int> dist1 (0,255);
  18. unsigned char red = (unsigned char) dist1(engine);
  19. unsigned char green = (unsigned char) dist1(engine);
  20. unsigned char blue = (unsigned char) dist1(engine);
  21. return std::make_tuple(red, green, blue);
  22. }
  23.  
  24. template <class RANDOM>
  25. static color_table create_random_color_map(RANDOM engine){
  26. color_table lut;
  27. lut.generate([&](const unsigned char& i)->rgb_tuple {
  28. return random_color(engine);
  29. } );
  30. return lut;
  31. }
  32.  
  33. void color_table::generate(std::function<rgb_tuple(const unsigned char&)> predicate){
  34. for(int i = 0; i < 256; ++i){
  35. std::tie(red_table[i], green_table[i], blue_table[i]) = predicate(i);
  36. }
  37. }
  38.  
  39. int main()
  40. {
  41. std::mt19937 engine;
  42. create_random_color_map(engine);
  43. }
  44.  
Success #stdin #stdout 0s 2980KB
stdin
Standard input is empty
stdout
Standard output is empty