#include <iostream>
#include <algorithm>
#include <ctime>
#include <cstdlib>
#include <iterator>

template<typename i_t, typename functor_t>
void compute(i_t start, i_t end, functor_t f)
{
    std::for_each(start, end, [&](decltype(*start) &a){a = f();});
}
int main()
{
      std::srand(std::time(0));//Wieso kann Scheiß-Ideone kein nullptr?
      std::vector<int> a(5);
      compute(a.begin(), a.end(), [](){return rand() % 3;});
      std::copy(a.begin(), a.end(), std::ostream_iterator<int>(std::cout));
}