Write a program that generates 50 random numbers of type integer ranges from 1 to 1000 and load all the numbers into a C++ vector. The program should then display the largest, the smallest, the sum, and the average values stored in the vector. Sort the vector in ascending order and display all values on screen with ten numbers per line.
All tasks should utilize C++ STL