arg shuffler added based on std::random_shuffle and Mersenne Twister RNG from Boost