#include <iostream>
#include <vector>
#include <cstdlib>
#include <ctime>
using namespace std;

vector<int> randomVector (int n, int upperBound) {
  vector<int> vec (n);
  for (int i = 0; i<vec.size(); i++) {
    vec[i] = rand () % upperBound;
  }
  return vec;
}

void printVector (const vector<int>& vec) {
  for (int i = 0; i < (int) vec.size(); i++) {
    cout << vec[i] << " ";
  }
}

int howMany (const vector<int>& vec, int value) {
  int count = 0;
  for (int i=0; i< vec.size(); i++) {
    if (vec[i] == value) count++;
  }
  return count;
}

int main () {
  vector<int> count (4, 0);
  vector<double> doubleVector;
  vector<int> copy1 (count);
  vector<int> copy2 = count;
  int numValues = 20;
  int upperBound = 10;
  srand(time(NULL));

  vector<int> Vector = randomVector (numValues, upperBound);
  printVector (Vector);

  numValues = 1000000;
  upperBound = 365;
  Vector = randomVector (numValues, upperBound);
  cout << "\nvalue\thowMany\n";

  for (int i = 0; i<upperBound; i++) {
    cout << i << '\t' << howMany (Vector, i) << endl;
  }
/*
  vector<int> histogram (upperBound);

  for (int i = 0; i<upperBound; i++) {
    int count = howMany (Vector, i);
    histogram[i] = count;
  }
*/
  vector<int> histogram (upperBound, 0);

  for (int i = 0; i<numValues; i++) {
    int index = Vector[i];
    histogram[index]++;
  }

  cout << "\nn\thow many\n";
  for (int i = 0; i<upperBound; i++) {
	  cout << i << "\t" << histogram[i] << endl;
  }

  return 0;
}


